Structure + Memory + WriteData
Re: Structure + Memory + WriteData
Hab den Fehler endlich gefunden :
Wenn Define.irgendwas im Hauptprogramm
steht, gilt diese Deklaration NICHT in einem
Unterprogramm (Procedure). Ist also nicht
Global gültig.
Habs jetzt in meiner Procedure stehen.
Sollte man evtl. in der Hilfe vermerken.
Wenn Define.irgendwas im Hauptprogramm
steht, gilt diese Deklaration NICHT in einem
Unterprogramm (Procedure). Ist also nicht
Global gültig.
Habs jetzt in meiner Procedure stehen.
Sollte man evtl. in der Hilfe vermerken.
PB 6.10
- 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: Structure + Memory + WriteData
Das Define <> Global ist sollte doch wohl klar sein
Sonst wäre Global ja überflüssig.
Mit Define deklariert man lokale Variablen im Mainscorpe oder in Proceduren, wobei in der
Procedure Protected vorzuziehen ist.
Mit Global deklariert man globale Variablen, dies sollte immer im Mainscope erfolgen,
auch wenn die deklaration in Proceduren erlaubt ist.
Gruß
Thomas

Sonst wäre Global ja überflüssig.
Mit Define deklariert man lokale Variablen im Mainscorpe oder in Proceduren, wobei in der
Procedure Protected vorzuziehen ist.
Mit Global deklariert man globale Variablen, dies sollte immer im Mainscope erfolgen,
auch wenn die deklaration in Proceduren erlaubt ist.
Gruß
Thomas
Re: Structure + Memory + WriteData
Gut zu wissen, aber wie bekomme ich
das ganze geregelt ?
Die Structure soll ja global sein und die
einzelnen Proceduren sollen die verschiedenen
Bereiche (b1, b2, b3) füllen. Eine andere Procedure
wiederum soll dann das ganze in eine Datei speichern.
Bei meinem jetzigen Versuch bleiben die Bereiche
leer. Kannste mir mal dabei helfen ? Habs unten
mal nur mit einer Füll-Procedure gemacht.
das ganze geregelt ?
Die Structure soll ja global sein und die
einzelnen Proceduren sollen die verschiedenen
Bereiche (b1, b2, b3) füllen. Eine andere Procedure
wiederum soll dann das ganze in eine Datei speichern.
Bei meinem jetzigen Versuch bleiben die Bereiche
leer. Kannste mir mal dabei helfen ? Habs unten
mal nur mit einer Füll-Procedure gemacht.
Code: Alles auswählen
EnableExplicit
Structure MyStruct
b1.b[10]
b2.b[20]
b3.b[70]
EndStructure
Define.MyStruct b
Procedure fuelle()
Define.MyStruct a
a\b1[0] = 'A'
a\b2[0] = 'B'
a\b3[0] = 'C'
EndProcedure
fuelle()
; nur für Anzeigen
Debug PeekS(@b\b1[0], 1, #PB_Ascii)
Debug PeekS(@b\b2[0], 1, #PB_Ascii)
Debug PeekS(@b\b3[0], 1, #PB_Ascii)
End
PB 6.10
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Structure + Memory + WriteData
ei, indem du Global benutzt um die Variable zu definieren. 

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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: Structure + Memory + WriteData
Der Code ist ja wieder etwas wiedersprüchlich, wofür soll a dienen?
Ansonsten so:
Ansonsten so:
Code: Alles auswählen
EnableExplicit
Structure MyStruct
b1.b[10]
b2.b[20]
b3.b[70]
EndStructure
Global.MyStruct b
Procedure fuelle()
b\b1[0] = 'A'
b\b2[0] = 'B'
b\b3[0] = 'C'
EndProcedure
fuelle()
; nur für Anzeigen
Debug PeekS(@b\b1[0], 1, #PB_Ascii)
Debug PeekS(@b\b2[0], 1, #PB_Ascii)
Debug PeekS(@b\b3[0], 1, #PB_Ascii)
End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Structure + Memory + WriteData
außerdem muss die doch garnicht Global sein.
man braucht doch nur die Adresse an die Proc zu übergeben,
da macht man in der Proc nen strukturierten Pointer draus und greif ganz normal drauf zu.
... oder seh ich das falsch, @ts?
man braucht doch nur die Adresse an die Proc zu übergeben,
da macht man in der Proc nen strukturierten Pointer draus und greif ganz normal drauf zu.
... oder seh ich das falsch, @ts?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- 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: Structure + Memory + WriteData
Nein, aber so ist es einfacher zu verstehen und mehr Basic-Like. Wir sindKaeru Gaman hat geschrieben:... oder seh ich das falsch, @ts?
hier schließlich im Anfängerforum. Außerdem wirds problematisch wenns
in einer Procedure definiert wurde und in einer anderen per Pointer drauf
zugegriffen wird, weil das geht nur, solange die erstere nicht komplett
verlassen wurde und somit der Speicherbereich ungültig.
Gruß
Thomas
Re: Structure + Memory + WriteData
Super, so gehts und verstehe ich es auch.
Hatte mich zu sehr mit dem 'Define - Kram'
verhakt. Geht auch ohne.
Danke nochmals.
Hatte mich zu sehr mit dem 'Define - Kram'
verhakt. Geht auch ohne.
Danke nochmals.
PB 6.10
- 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: Structure + Memory + WriteData
Kein Problem, hier noch mal die Version, wie KG sie beschrieben hat:
Bringt eigentlich keine Vorteile, ausser das eine eine Var weniger Global ist, dafür aber der
Fehlerteufel dichter
Code: Alles auswählen
EnableExplicit
Structure MyStruct
b1.b[10]
b2.b[20]
b3.b[70]
EndStructure
Define.MyStruct b
Procedure fuelle(*a.MyStruct)
*a\b1[0] = 'A'
*a\b2[0] = 'B'
*a\b3[0] = 'C'
EndProcedure
fuelle(@b)
; nur für Anzeigen
Debug PeekS(@b\b1[0], 1, #PB_Ascii)
Debug PeekS(@b\b2[0], 1, #PB_Ascii)
Debug PeekS(@b\b3[0], 1, #PB_Ascii)
End
Fehlerteufel dichter

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Structure + Memory + WriteData
wenn es sich nur um eine einzige handelt - klar.
aber sehr oft übergibt mal Strukturen an Proceduren, die zig mal vorkommen, Datensätze aus einer Liste oder sowas.
die alle Global zu machen wär ein Greuel, außerdem muss man der Proc dann sagen, welchen der hunderttausend Datensätze man meint.
aber sehr oft übergibt mal Strukturen an Proceduren, die zig mal vorkommen, Datensätze aus einer Liste oder sowas.
die alle Global zu machen wär ein Greuel, außerdem muss man der Proc dann sagen, welchen der hunderttausend Datensätze man meint.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.