Seite 2 von 3

Verfasst: 14.04.2007 16:55
von hmi222
hi ts-soft!
leider ist dein code ja im Prinzip dasselbe
wie meiner (siehe 1.Beitrag) .

Versuche die Länge zu bekommen
OHNE in der DataSection den2. Dummy Pointer (bei dir ogg_end)
zu setzen...

Verfasst: 14.04.2007 17:04
von ts-soft
hmi222 hat geschrieben: Versuche die Länge zu bekommen
OHNE in der DataSection den2. Dummy Pointer (bei dir ogg_end)
zu setzen...
Ich dachte es geht um die Parameterübergabe.

Dann ist die Antwort ja leicht: Unmöglich

Woran willste den erkennen, das Ende ist, wenn keinerlei Kennzeichen
existiert?

Verfasst: 14.04.2007 17:37
von AND51
Und wenn man das Include ans Ende der EXE packt? Ungefähr so:

Code: Alles auswählen

MessageRequester("", "Lalala, überall Code")

; mehr Code

; ...

; ganzes Program...


; Länge des Includes mit ohne 2. Label:
Debug FileSize(ProgramFilename())-?datei

DataSection
    datei: IncludeBinary "C:\foto.jpg"
EndDataSection
Am Ende darf dann natürlich kein Code mehr folgen. Dann braucht man kein 2. Label. Es wäre sogar möglich mehrere Dateien zu prüfen, ohne, dass noch ein "Dummy-Label" gesetzt werden muss.

Wär das ne Idee? Habs noch nicht prüfen können.

Verfasst: 14.04.2007 17:43
von ts-soft
>> Am Ende darf dann natürlich kein Code mehr folgen.
Deshalb ist die Datasection aber nicht am Ende :lol:
Normallerweise sind die Windows-Resourcen am Ende, Manifest, Icon usw.

Aber nach der Compilierung an die Exe anhängen geht, ist aber eher mehr
als weniger Aufwand :mrgreen:

Verfasst: 14.04.2007 18:30
von hmi222
Vielen Dank an ALLE.... :allright:

Übergeb jetzt halt Song-Pointer und die Länge!

Verfasst: 14.04.2007 19:57
von AND51
> Deshalb ist die Datasection aber nicht am Ende
Danke für den Tipp! Wieder was gelernt!
Heißt das, egal wo und egtal wie viele DataSections ich notiere, sie werden immer am Anfang des Executables eingebunden?

Wenn sie am Anfang eingebunden werden, könnte man das Label ja dahinter setzen, dann braucht man das Label nicht davor => das nur zu der Frage, wie man das ganze mit 1 Label realisieren kann @ Threadersteller

Verfasst: 14.04.2007 19:59
von ts-soft
>> sie werden immer am Anfang des Executables eingebunden?
Woraus hast denn das wieder geschlossen :mrgreen:
Am Anfang ist immer der PE-Header

Verfasst: 14.04.2007 21:03
von PureBasic4.0
hab's nicht getestet, aber vielleicht mit

Code: Alles auswählen

MemorySize(?Include)

Verfasst: 14.04.2007 21:24
von ts-soft
PureBasic4.0 hat geschrieben:hab's nicht getestet, aber vielleicht mit

Code: Alles auswählen

MemorySize(?Include)
Nein, brauchste nicht testen, geht nicht :wink:
Die DataSection in der Exe Allociert keinen Speicher vom Heap

Verfasst: 14.04.2007 23:19
von jear
Wenn es denn unbedingt nur ein Pointer bei der Parameterübergabe sein darf:

Code: Alles auswählen

Procedure Test(*Pointer) 
  FLen.l = PeekL(*Pointer) 
  SStart.l = *Pointer + SizeOf(Long) 
  MessageRequester("Drinnen", "Startadresse : " + Str(SStart)+ #LF$ + "Länge : " + Str(FLen) , #MB_OK|#MB_ICONINFORMATION) 
EndProcedure 

; Länge der IncludeDatei 
FLen.l = ?dateiE - ?datei 
PokeL(?dateiL, FLen) 
MessageRequester("Draußen", "Startadresse : " + Str(?datei)+ #LF$ + "Länge : " + Str(FLen) , #MB_OK|#MB_ICONINFORMATION) 

Test(?dateiL) 

DataSection
  dateiL: Data.l 0  
  datei: IncludeBinary "foto.jpg"
  dateiE: 
EndDataSection