Variablen + DLLs

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Variablen + DLLs

Beitrag von Bisonte »

Da belegt man ihn doch.... wegen der länge.
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​​
Benutzeravatar
H.Brill
Beiträge: 496
Registriert: 15.10.2004 17:42
Wohnort: 66557 Neunkirchen

Re: Variablen + DLLs

Beitrag von H.Brill »

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.

Code: Alles auswählen

 IColumn(lv1, @"Name", 280, 0)
zur Spaltenbeschriftung.

Aber belassen wir es dabei. Wir wissen ja,
wie es funktioniert und vor allem, daß es funktioniert.
PB 6.10
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Variablen + DLLs

Beitrag von Frabbing »

Der Speicher von Variablen wird normalerweise erst zur Laufzeit erstellt, wird bei PB auch so sein.
Gruß, Frank
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

Re: Variablen + DLLs

Beitrag von ts-soft »

Frabbing hat geschrieben:Der Speicher von Variablen wird normalerweise erst zur Laufzeit erstellt, wird bei PB auch so sein.
Nein, ist nur bei Stringvariablen so, die der Stringmanager verwalten muss. Bei anderen Variablen wird
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.
Bild
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

Re: Variablen + DLLs

Beitrag von ts-soft »

H.Brill hat geschrieben:Hallo Frank,
Ist ja geil :
auch sowas mit 10 Zeichen geht :

Code: Alles auswählen

@"          "
Das ist eine Stringkonstante, keine Variable!
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.
Bild
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Variablen + DLLs

Beitrag von Frabbing »

Bei anderen Variablen wird
der Speicher sofort erstellt
Mit sofort meinst du vor der Laufzeit der Exe?
Gruß, Frank
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

Re: Variablen + DLLs

Beitrag von ts-soft »

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 :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
Benutzeravatar
Frabbing
Beiträge: 160
Registriert: 15.02.2007 21:31
Kontaktdaten:

Re: Variablen + DLLs

Beitrag von Frabbing »

Also doch im laufenden Betrieb... :mrgreen:
Vorm start der Exe geht wohl schlecht :mrgreen:
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.
Gruß, Frank
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

Re: Variablen + DLLs

Beitrag von ts-soft »

Aha, ja dann weiß ich nicht genau wie PB das macht. Stringkonstanten werden auf jeden Fall in einer
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.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Variablen + DLLs

Beitrag von Danilo »

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?
Es gibt im PE-Format 2 verschiedene "DataSections", eine für initialisierte Speicherbereiche (Strings)
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
Antworten