Hallo Rainer,
probiere mal folgende Sub
Schmeisse einfach die RaiseEvent Anweisungen raus. desweiteren ist MyImage eine Imagebox mit dem Index 0
Eigentlich sollte die ihren Dienst machen
Private Function ReadHeader(sfile As String) As Boolean
On Error GoTo ErrHandler
ReadHeader = False
Dim MyBildHeader As String, MyDateiheader As String, MyBuffer As String, Mybildbuffer As String
Dim MyBildZaehler As Integer, Dateinr As Integer
Dim MyX As Long, MyY As Long, Myoffsetx As Long, MyOffsety As Long, MyWartezeit As Long, MyZeit As Long
For MyX = 1 To MyImage.Count - 1
Unload MyImage(MyX)
Next MyX
Dateinr = FreeFile
Open sfile For Binary Access Read As Dateinr
MyBuffer = String(LOF(Dateinr), Chr(0))
Get #Dateinr, , MyBuffer
Close Dateinr
MyX = 1
MyBildZaehler = 0
MyY = InStr(1, MyBuffer, Chr(0) & Chr(33) & Chr(249)) + 1
MyDateiheader = Left(MyBuffer, MyY)
If Left$(MyDateiheader, 3) "GIF" Then
RaiseEvent Error("Es handelt sich nicht um ein animiertes Gif")
Exit Function
End If
MyX = MyY + 2
If Len(MyDateiheader) \>= 127 Then
MyZeit& = Asc(Mid(MyDateiheader, 126, 1)) + (Asc(Mid(MyDateiheader, 127, 1)) \* 256&:wink:
Else
MyZeit = 0
End If
Do
MyBildZaehler = MyBildZaehler + 1
MyY = InStr(MyX, MyBuffer, Chr(0) & Chr(33) & Chr(249)) + 3
If MyY \> Len(sfile) Then
Dateinr = FreeFile
Open "tmp.gif" For Binary As Dateinr
Mybildbuffer = String(Len(MyDateiheader) + MyY - MyX, Chr(0))
Mybildbuffer = MyDateiheader & Mid(MyBuffer, MyX - 1, MyY - MyX)
Put #Dateinr, 1, Mybildbuffer
MyBildHeader = Left(Mid(MyBuffer, MyX - 1, MyY - MyX), 16)
Close Dateinr
MyWartezeit = ((Asc(Mid(MyBildHeader, 4, 1))) + (Asc(Mid(MyBildHeader, 5, 1)) \* 256&:wink:) \* 10&
If MyBildZaehler \> 1 Then
Myoffsetx = Asc(Mid(MyBildHeader, 9, 1)) + (Asc(Mid(MyBildHeader, 10, 1)) \* 256&:wink:
MyOffsety = Asc(Mid(MyBildHeader, 11, 1)) + (Asc(Mid(MyBildHeader, 12, 1)) \* 256&:wink:
Load MyImage(MyBildZaehler - 1)
MyImage(MyBildZaehler - 1).Left = MyImage(0).Left + (Myoffsetx \* Screen.TwipsPerPixelX)
MyImage(MyBildZaehler - 1).Top = MyImage(0).Top + (MyOffsety \* Screen.TwipsPerPixelY)
End If
MyImage(MyBildZaehler - 1).Tag = MyWartezeit
MyImage(MyBildZaehler - 1).Picture = LoadPicture("tmp.gif")
Kill ("tmp.gif")
MyX = MyY
End If
DoEvents
Loop Until MyY = 3
If MyX 1 Then
Myoffsetx = Asc(Mid(MyBildHeader, 9, 1)) + (Asc(Mid(MyBildHeader, 10, 1)) \* 256)
MyOffsety = Asc(Mid(MyBildHeader, 11, 1)) + (Asc(Mid(MyBildHeader, 12, 1)) \* 256)
Load MyImage(MyBildZaehler - 1)
MyImage(MyBildZaehler - 1).Left = MyImage(0).Left + (Myoffsetx \* Screen.TwipsPerPixelX)
MyImage(MyBildZaehler - 1).Top = MyImage(0).Top + (MyOffsety \* Screen.TwipsPerPixelY)
End If
MyImage(MyBildZaehler - 1).Tag = MyWartezeit
MyImage(MyBildZaehler - 1).Picture = LoadPicture("tmp.gif")
Kill ("tmp.gif")
End If
ReadHeader = True
Exit Function
ErrHandler:
RaiseEvent Error("Fehler beim auslesen der Meta informationen")
End Function
mfG Alex