Indem Du Dir die Strukture anschaust
Ansonsten kannste nur die Größe feststellen, die aber keinerlei
Rückschlüsse zuläßt. (SizeOf(Personen))
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.
SizeOf bringt mir ja wie du festgestellt hast nichts. Und anschauen möchte ich die Struktur im Programmablauf... Ich weiß natürlich wieviele Elemente die Struktur hat, möchte aber bei Änderungen an der Struktur nicht immer den gesamten Code ändern in dem ich Bezug auf die Anzahl der Elemente in der Struktur nehme.
Es gibt also keine Möglichkeit die Anzahl der Elemente programmtechnisch zu ermitteln?
Kaeru Gaman hat geschrieben:... allerdings erschließt sich mir jetzt auch nicht, wozu das nötig/sinnvoll sein sollte.
Ich verwende z.B. Strukturen zur Abbildung von Datenbanktabellen. Diese Tabellen frage ich im Programmverlauf an vielen Stellen z.B. über Schleifen ab. Heute steht dort je nach Tabelle (und damit auch je nach Struktur) z.B. folgendes:
if tabelle.s = "tabelle1"
for i = 1 to 7 (<- Anzahl der Spalten in der DB-Tabelle = Anzahl der Elemente in der Struktur)
do something...
elseif tabelle.s = "tabelle2"
for i = 1 to 13 (<- wieder eine andere Anzahl und evtl. der einzige Unterschied zur ersten Schleife)
do something
noch mehr tabellen...
endif
Ich hoffe der Grund meiner Anfrage ist nun klarer.
Dafür schreibt man meist als erstes element die größe der Strukture in die
Strukture, macht mind. jede 2te Api-Strukture so.
Anhand des ersten members kann man dann feststellen wieviel platz in der
strukture ist und entsprechend reagieren.
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.
ts-soft hat geschrieben:Dafür schreibt man meist als erstes element die größe der Strukture in die
Strukture, macht mind. jede 2te Api-Strukture so.
Anhand des ersten members kann man dann feststellen wieviel platz in der
strukture ist und entsprechend reagieren.
Das hört sich nach einer Lösung an, nur wie stelle ich das an? Wie weise ich in der Struktur einem Element direkt einen Wert zu?
Structure PERSONEN
size.i
id.l
vorname.s
nachname.s
alter.l
geschlecht.s
EndStructure
Define.PERSONEN men
men\size = SizeOf(PERSONEN)
Wenn Du jetzt die Strukture, bzw. eher den Memory, mehr ist es ja nicht,
an eine andere Anwendung übergibst, kann diese feststellen wieviel Platz
dort ist, damit es den Speicher nicht überschreibt.
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.