Variablen + DLLs
Re: Variablen + DLLs
Da belegt man ihn doch.... wegen der länge.
Da wird doch speicher für reserviert, sonst würde es da nicht klappen.
Da wird doch speicher für reserviert, sonst würde es da nicht klappen.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Variablen + DLLs
Hab ich übersehen.
Mit dem @"irgendwas" ist es ja
eine schöne Sache, da man nichts
deklarieren braucht. Bei den DLL-
Funktionen, die keinen Speicher
beschreiben, klappt es wunderbar.
z.B.
zur Spaltenbeschriftung.
Aber belassen wir es dabei. Wir wissen ja,
wie es funktioniert und vor allem, daß es funktioniert.
Mit dem @"irgendwas" ist es ja
eine schöne Sache, da man nichts
deklarieren braucht. Bei den DLL-
Funktionen, die keinen Speicher
beschreiben, klappt es wunderbar.
z.B.
Code: Alles auswählen
IColumn(lv1, @"Name", 280, 0)
Aber belassen wir es dabei. Wir wissen ja,
wie es funktioniert und vor allem, daß es funktioniert.
PB 6.10
Re: Variablen + DLLs
Der Speicher von Variablen wird normalerweise erst zur Laufzeit erstellt, wird bei PB auch so sein.
Gruß, Frank
- 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
Re: Variablen + DLLs
Nein, ist nur bei Stringvariablen so, die der Stringmanager verwalten muss. Bei anderen Variablen wirdFrabbing hat geschrieben:Der Speicher von Variablen wird normalerweise erst zur Laufzeit erstellt, wird bei PB auch so sein.
der Speicher sofort erstellt und wenn nichts angegeben mit 0 initialisiert, was bedeutet, das deren
Pointer niemals auf 0 zeigt und sofort verwendbar ist.
Code: Alles auswählen
Define string.s
Define wert.i
Debug @string
Debug @wert
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- 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
Re: Variablen + DLLs
Das ist eine Stringkonstante, keine Variable!H.Brill hat geschrieben:Hallo Frank,
Ist ja geil :
auch sowas mit 10 Zeichen geht :
Code: Alles auswählen
@" "
Nur zur Klarheit.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Variablen + DLLs
Mit sofort meinst du vor der Laufzeit der Exe?Bei anderen Variablen wird
der Speicher sofort erstellt
Gruß, Frank
- 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
Re: Variablen + DLLs
Nein, beim start der Exe wird pauschal Speicher vom Heap angefordert, der dafür dann gleich genutzt
wird. Vorm start der Exe geht wohl schlecht
wird. Vorm start der Exe geht wohl schlecht

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Variablen + DLLs
Also doch im laufenden Betrieb...

Selbstverständlich geht das, und ist sogar in der Assemblerprogrammierung auch üblich. Variablen werden normalerweise in einer der Datasektion zu der Exe gelinkt. Zur Laufzeit werden i.d.R. nur größere Speicherbereiche erzeugt, und auch das geschieht durchaus mitunter noch beim Linken in einer besonderen Datasektion.Vorm start der Exe geht wohl schlecht
Gruß, Frank
- 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
Re: Variablen + DLLs
Aha, ja dann weiß ich nicht genau wie PB das macht. Stringkonstanten werden auf jeden Fall in einer
Datasection angelegt, aber einfache Variablen?
Datasection angelegt, aber einfache Variablen?
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Variablen + DLLs
Es gibt im PE-Format 2 verschiedene "DataSections", eine für initialisierte Speicherbereiche (Strings)ts-soft hat geschrieben:Aha, ja dann weiß ich nicht genau wie PB das macht. Stringkonstanten werden auf jeden Fall in einer
Datasection angelegt, aber einfache Variablen?
und eine für uninitialisierte Speicherbereiche. (Ich denke mal daß das bei anderen Formaten auch so ist.)
Letztere Section braucht keinen Platz in der .exe auf der Festplatte und wird vom Loader beim Start reserviert.
PB initialisiert diesen Bereich beim Start dann mit 0.
Lokale Variablen natürlich entsprechend auf dem Stack beim Einsprung in die Funktion.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck