Daten auslesen?
Verfasst: 20.09.2005 11:01
Kann sich das bitte mal jemand anschauen
Also ich habe eine datei die bilderexe heist der wurde die datei pics.bin angehangen und ein longwert der die länge der datei pics.bin enthält
so und no lese ich den longwert aus ,ziehe ihn von der gesamtlänge ab und springe zu dieser stelle und lese sie aus bis zum ende und danach soll sie als pics.bin gespeichert werden!
mein Problem irgendwo muss noch n fehler sein???
vileicht findet einer von euch heraus was ich falsch mache???
Der Code:
Also ich habe eine datei die bilderexe heist der wurde die datei pics.bin angehangen und ein longwert der die länge der datei pics.bin enthält
so und no lese ich den longwert aus ,ziehe ihn von der gesamtlänge ab und springe zu dieser stelle und lese sie aus bis zum ende und danach soll sie als pics.bin gespeichert werden!
mein Problem irgendwo muss noch n fehler sein???
vileicht findet einer von euch heraus was ich falsch mache???
Der Code:
Code: Alles auswählen
UseJPEGImageDecoder()
Enumeration
#window_0
#file1
#file2
#pic
#picdraw
#button1
#button2
#next
#last
#frame3d
#bildex
#bildexefile3
#bildexefile2
EndEnumeration
If OpenWindow(#window_0, 216, 0, 850, 650, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar |#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget,"Gallerymakershow")
SetWindowTitle(#window_0,"Gallerymaker2005 "+GetFilePart(file$)+" - Bild:"+Str(a)+" - Bilder Insgesamt:"+Str(total))
If CopyFile("bildexe.exe","~~bildexe.exe")
If OpenFile(#bildexefile3,"~~bildexe.exe")
lengedatei=Lof()
longwert=lengedatei-4
FileSeek(longwert)
logw=ReadLong()
wertex=lengedatei-logw
If wertex>37000
*speicher=AllocateMemory(logw)
MessageRequester("",Str(*speicher))
FileSeek(wertex)
bytes=ReadData(*speicher,logw)
CloseFile(#bildexefile3)
If OpenFile(#bildexefile2,"pics.bin")
WriteData(*speicher,lengedatei)
CloseFile(#bildexefile2)
EndIf
Else
CloseFile(#bildexefile3)
EndIf
EndIf
EndIf
a=1
file$=VBin_Dir("pics.Bin",1)
adress=VBin_("pics.bin",file$)
total=VBin_TotalFiles("pics.bin")
CatchImage(#last,?last)
CatchImage(#next,?Nexti)
CatchImage(#picdraw,adress)
VBin_Free(adress)
If CreateGadgetList(WindowID())
UseImage(#picdraw)
imgh=335-(ImageHeight()/2)
imgb=425-(ImageWidth()/2)
ImageGadget(#pic,imgb,imgh,800,600,UseImage(#picdraw))
Frame3DGadget(#frame3d,0,0,850,650,"",#PB_Frame3D_Double )
ButtonImageGadget(#button1,365,10,60,20,UseImage(#last))
GadgetToolTip(#button1,"Ein Bild Zurück")
ButtonImageGadget(#button2,435,10,60,20,UseImage(#next))
GadgetToolTip(#button2,"Ein Bild Weiter")
EndIf
EndIf
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadgetID() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_EventGadget
If GadgetID=#button2
Debug a
If a>VBin_TotalFiles("pics.Bin")-1
a=VBin_TotalFiles("pics.Bin")
Else
a=a+1
file$=VBin_Dir("pics.Bin",a)
adress=VBin_("pics.bin",file$)
SetWindowTitle(#window_0,"Gallerymaker2005 "+GetFilePart(file$)+" - Bild:"+Str(a)+" - Bilder Insgesamt:"+Str(total))
CatchImage(#picdraw,adress)
UseImage(#picdraw)
imgh=335-(ImageHeight()/2)
imgb=425-(ImageWidth()/2)
SetGadgetState(#pic,UseImage(#picdraw))
ResizeGadget(#pic,imgb,imgh,-1,-1)
VBin_Free(adress)
EndIf
ElseIf GadgetID=#button1
Debug a
If a>1
a=a-1
file$=VBin_Dir("pics.Bin",a)
adress=VBin_("pics.bin",file$)
SetWindowTitle(#window_0,"Gallerymaker2005 "+GetFilePart(file$)+" - Bild:"+Str(a)+" - Bilder Insgesamt:"+Str(total))
CatchImage(#picdraw,adress)
UseImage(#picdraw)
imgh=335-(ImageHeight()/2)
imgb=425-(ImageWidth()/2)
SetGadgetState(#pic,UseImage(#picdraw))
ResizeGadget(#pic,imgb,imgh,-1,-1)
VBin_Free(adress)
Else
a=1
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
;
End
last:
IncludeBinary "last.ico"
Nexti:
IncludeBinary "next.ico"