Moin Manfred,
den Code habe ich auch schon probiert, leider ohne Erfolg.
Erst meckert das Programm, weil variable fehlen und wenn ich diese deklariert habe, dann sagt er mir die Fehlernummer: 424 Objekt erforderlich !?
Ich habe mir über den Link von dir eine Gif Datei runtergeladen.
Hier mal der Code Teil1:
Option Explicit
Dim lngBildAnzahl As Long
Dim lngEinzelPic As Long
Public Function GIF_LADEN(strDatei As String, _
varImage As Variant) As Boolean
GIF_LADEN = False
If Dir$(strDatei) = "" Or strDatei = "" Then
MsgBox "Datei " & strDatei & " nicht gefunden.", _
vbInformation
Exit Function
End If
On Error GoTo Fehler
Dim DNr As Integer
Dim Bild_Header As String
Dim Datei_Header As String
Dim strBuffer As String
Dim strBildBuffer As String
Dim intBildZaehler As Integer
Dim lngx As Long
Dim lngY As Long
Dim lngOffsetX As Long
Dim lngOffsetY As Long
Dim lngWarteZeit As Long
Dim strGifEnde As String
Dim lngZeit As Long
strGifEnde = Chr(0) & Chr(33) & Chr(249)
For lngx = 1 To varImage.Count - 1
Unload varImage(lngx)
Next lngx
DNr = FreeFile
Open strDatei For Binary Access Read As DNr
strBuffer = String(LOF(DNr), Chr(0))
Get #DNr, , strBuffer
Close DNr
lngx = 1
intBildZaehler = 0
lngY = InStr(1, strBuffer, strGifEnde) + 1
Datei_Header = Left(strBuffer, lngY)
If Left$(Datei_Header, 3) <> "GIF" Then
MsgBox "Bei der gewaehlten Datei handelt es " + _
"sich nicht um eine Gif-Datei.", vbInformation
Exit Function
End If
GIF_LADEN = True
lngx = lngY + 2
If Len(Datei_Header) >= 127 Then
lngZeit& = Asc(Mid(Datei_Header, 126, 1)) + _
(Asc(Mid(Datei_Header, 127, 1)) * 256&)
Else
lngZeit = 0
End If
Do
intBildZaehler = intBildZaehler + 1
lngY = InStr(lngx, strBuffer, strGifEnde) + 3
If lngY > Len(strGifEnde) Then
DNr = FreeFile
Open "tmp.gif" For Binary As DNr
strBildBuffer = String(Len(Datei_Header) + _
lngY - lngx, Chr(0))
strBildBuffer = Datei_Header & _
Mid(strBuffer, lngx - 1, lngY - lngx)
Put #DNr, 1, strBildBuffer
Bild_Header = Left(Mid(strBuffer, lngx - 1, _
lngY - lngx), 16)
Close DNr
lngWarteZeit = ((Asc(Mid(Bild_Header, 4, 1))) + _
(Asc(Mid(Bild_Header, 5, 1)) * 256&)) * 10&
If intBildZaehler > 1 Then
lngOffsetX = Asc(Mid(Bild_Header, 9, 1)) + _
(Asc(Mid(Bild_Header, 10, 1)) * 256&)
lngOffsetY = Asc(Mid(Bild_Header, 11, 1)) + _
(Asc(Mid(Bild_Header, 12, 1)) * 256&)
Load varImage(intBildZaehler - 1)
varImage(intBildZaehler - 1).Left = varImage(0).Left + _
(lngOffsetX * Screen.TwipsPerPixelX)
varImage(intBildZaehler - 1).Top = varImage(0).Top + _
(lngOffsetY * Screen.TwipsPerPixelY)
End If
varImage(intBildZaehler - 1).Tag = lngWarteZeit
varImage(intBildZaehler - 1).Picture = _
LoadPicture("tmp.gif")
Kill ("tmp.gif")
lngx = lngY
End If
DoEvents
Loop Until lngY = 3
If lngx < Len(strBuffer) Then
DNr = FreeFile
Open "tmp.gif" For Binary As DNr
strBildBuffer = String(Len(Datei_Header) + _
Len(strBuffer) - lngx, Chr(0))
strBildBuffer = Datei_Header & _
Mid(strBuffer, lngx - 1, Len(strBuffer) - lngx)
Put #DNr, 1, strBildBuffer
Bild_Header = Left(Mid(strBuffer, lngx - 1, _
Len(strBuffer) - lngx), 16)
Close DNr
lngWarteZeit = ((Asc(Mid(Bild_Header, 4, 1))) + _
(Asc(Mid(Bild_Header, 5, 1)) * 256)) * 10
If intBildZaehler > 1 Then
lngOffsetX = Asc(Mid(Bild_Header, 9, 1)) + _
(Asc(Mid(Bild_Header, 10, 1)) * 256)
lngOffsetY = Asc(Mid(Bild_Header, 11, 1)) + _
(Asc(Mid(Bild_Header, 12, 1)) * 256)
Load varImage(intBildZaehler - 1)
varImage(intBildZaehler - 1).Left = varImage(0).Left + _
(lngOffsetX * Screen.TwipsPerPixelX)
varImage(intBildZaehler - 1).Top = varImage(0).Top + _
(lngOffsetY * Screen.TwipsPerPixelY)
End If
varImage(intBildZaehler - 1).Tag = lngWarteZeit
varImage(intBildZaehler - 1).Picture = _
LoadPicture("tmp.gif")
Kill ("tmp.gif")
End If
lngEinzelPic = varImage.Count - 1
Exit Function
Fehler:
MsgBox "Fehler Nummer. " & Err.Number & _
" beim Lesen der Datei.", vbInformation
GIF_LADEN = False
On Error GoTo 0
End Function Wer aufhört sich zu verbessern, hört auf gut zu sein. |