ReDim mit Struktur-Arrays

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

ReDim mit Struktur-Arrays

Beitrag von Mok »

Hallo.
Kann man mit Arrays in Strukturen ReDim machen? (Wenn ja: wie? Wenn nein: wie würde ein workaround aussehen?)
Andere Sachen, wie ArraySize() oder CopyArray() wären ja nicht so schwer, aber bei ReDim muss ich echt passen.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ReDim mit Struktur-Arrays

Beitrag von STARGÅTE »

klar geht das, da ja das Array nicht in der Strukture drin ist sonden außerhalb:

Code: Alles auswählen

Structure Test
 Long.l
 String.s
 Array Feld.i(100)
EndStructure

Debug SizeOf(Test)

Variable.Test

Debug SizeOf(Variable)
Debug ArraySize(Variable\Feld())

ReDim Variable\Feld(10000)

Debug SizeOf(Variable)
Debug ArraySize(Variable\Feld())
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: ReDim mit Struktur-Arrays

Beitrag von Mok »

Ach ja, PB-Arrays funzen ja auch in Strukturen. Ich bin bisher immer nur die C-Style Arrays (ArrName[n]) in Strukturen gewohnt, aber scheinbar gibt's da keinen (großen) Unterschied. (Laut Hilfe machen C-Arrays "direkte API Strukturen Portierung möglich". Auch mit Bindestrichen würde ich nicht wissen, was das heißt)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: ReDim mit Struktur-Arrays

Beitrag von STARGÅTE »

ein fix-Array mit den [ ] kann man nur mit hilfe von selbst erstellten Memory vergrößern:
Am anfang einfach n 0-Array erstellen:

Code: Alles auswählen

Structure Test
 Long.l
 String.s
 Field.i[0] ; 0 damit der Debugger nicht meckert, das man außerhalb des Bereichs kommt.
EndStructure

Debug SizeOf(Test)
und dann mit AllocateMemory je nach bedarf speicher anlegen. Das Array muss dann aber am ende sein, damit man nix überschreibt:

Code: Alles auswählen

*Test.Test = AllocateMemory(SizeOf(Test)+SizeOf(Integer)*10) ; 10 Integer-Felder (also 0 - 9)
*Test\Field[9] = 123
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten