Länge einer IncludeBinary bestimmen!

Anfängerfragen zum Programmieren mit PureBasic.
hmi222
Beiträge: 69
Registriert: 23.03.2007 13:20
Kontaktdaten:

Beitrag 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...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
hmi222
Beiträge: 69
Registriert: 23.03.2007 13:20
Kontaktdaten:

Beitrag von hmi222 »

Vielen Dank an ALLE.... :allright:

Übergeb jetzt halt Song-Pointer und die Länge!
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureBasic4.0
Beiträge: 785
Registriert: 29.10.2006 17:26
Wohnort: 127.0.0.1

Beitrag von PureBasic4.0 »

hab's nicht getestet, aber vielleicht mit

Code: Alles auswählen

MemorySize(?Include)
PB 4.50 RC1 + Ubuntu 10.04 LTS + Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Beitrag 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
Zuletzt geändert von jear am 15.04.2007 02:10, insgesamt 3-mal geändert.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Antworten