gut dankeStructure T
Waffe.l[4]
EndStructure
Debug SizeOf(T)
Write-, ReadStructure (3. Update)
ah stimmt, ist mir noch nie aufgefallen, denn SizeOf gibt mir hier ja auch nur 16 (also 4 Felder) an
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Verdammt wieso bekomm ich beim lesen dieser Struct hunger ..? Muss an der Hitze liegen oder so ...
Sorry für OT 
Thalius

Code: Alles auswählen
... "Waffe.l" ...

Thalius
@NTQ
Wieso benutzt du ständig Sizeof?
Kann man da nicht direkt die Werte eintragen?
Stehen doch in der Hilfe...
[Edit]
Nochwas, macht es einen Unterschied ob man ' oder " schreibt?
[/Edit]
Gruß
Scarabol
Wieso benutzt du ständig Sizeof?
Kann man da nicht direkt die Werte eintragen?
Stehen doch in der Hilfe...
[Edit]
Nochwas, macht es einen Unterschied ob man ' oder " schreibt?
[/Edit]
Gruß
Scarabol
Zuletzt geändert von Scarabol am 13.08.2007 16:16, insgesamt 2-mal geändert.
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
schreib ihm lieber eine PN. Er ist in der letzten Zeit nicht soScarabol hat geschrieben:@NTQ [...]
häufig im Board.
ja, ist ein (undokumentiertes?) Feature:Scarabol hat geschrieben:[Edit]
Nochwas macht es einen Unterschied ob man ' oder " schreibt?
[/Edit]
Code: Alles auswählen
Debug "e"
Debug 'e'
a²+b²=mc²
Ok danke gibt also den Ascii zurück
Wieso wird sowas nicht kommentiert?
Achja nochwas,
Der letzte Parameter von WriteStructure ist ja ein Pointer, oder?
Wenn ja wieso passt der in einen Character Datentyp der eigentlich viel zu klein ist???
[Edit]
Habs inzwischen selbst rausgefunden. Diese übergabe bewirkt das jeder character des String einzeln abegerufen werden kann.
Kann man nicht direkt mit Sizeof die Größe der Struktur ermitteln?
[/Edit]
Gruß
Scarabol
Wieso wird sowas nicht kommentiert?
Achja nochwas,
Der letzte Parameter von WriteStructure ist ja ein Pointer, oder?
Wenn ja wieso passt der in einen Character Datentyp der eigentlich viel zu klein ist???
[Edit]
Habs inzwischen selbst rausgefunden. Diese übergabe bewirkt das jeder character des String einzeln abegerufen werden kann.
Kann man nicht direkt mit Sizeof die Größe der Struktur ermitteln?
[/Edit]
Gruß
Scarabol
Zuletzt geändert von Scarabol am 13.08.2007 17:35, insgesamt 1-mal geändert.
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Kann ich damit auch solche Strukturen speichern, oder wie müsste ich den Code ändern?
structure intest
stuff.l
stuff.f
endstructure
structure test
test.intest[100]
endstructure
Gruß
Scarabol
structure intest
stuff.l
stuff.f
endstructure
structure test
test.intest[100]
endstructure
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Das solltest du Fred fragenScarabol hat geschrieben:Ok danke gibt also den Ascii zurück
Wieso wird sowas nicht kommentiert?

Wie meinst du das? Hier solltest du einfach einen Pointer eines StringsAchja nochwas,
Der letzte Parameter von WriteStructure ist ja ein Pointer, oder?
Wenn ja wieso passt der in einen Character Datentyp der eigentlich viel zu klein ist???
übergeben ... alles andere führt, spätestens zur laufzeit, zu unerklärlichen
und eventuell sogar spontanen Fehlern!
Welche Größe? Die des Strings? Nein, Sizeof ermittelt zur Compilerzeit[Edit]
Habs inzwischen selbst rausgefunden. Diese übergabe bewirkt das jeder character des String einzeln abegerufen werden kann.
Kann man nicht direkt mit Sizeof die Größe der Struktur ermitteln?
[/Edit]
die Strukturgröße, ein String hat eine dynamische Länge. Das geht also
von der Logik her nicht. Als alternative zu NTQs Variante könnte man mit
PeekC() den String Zeichenweise einlesen, oder per PeekS() und
Zeichenlänge auf 1 setzten.
Intern siehts so aus, das du 100 mal die beiden Strukturfelder stuff.l undKann ich damit auch solche Strukturen speichern, oder wie müsste ich den Code ändern?
structure intest
stuff.l
stuff.f
endstructure
structure test
test.intest[100]
endstructure
stuff.f hast, also müsste der Strukturstring so aussehen:
Code: Alles auswählen
StrukturString$ = ""
For i = 0 To 99
StrukturString$ + "lf"
Next
Weil du etwas falsch machstWieso führt die Procedure ReadStructure auf ein L-Listen Element angewendet zu einem Error?
Gruß
Scarabol

Quellcode hilft da nur ne Glaskugel

MFG PMV
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Ich habe eben extra für dich den Code geändert (s. 1. Post). In deinemScarabol hat geschrieben:Kann ich damit auch solche Strukturen speichern, oder wie müsste ich den Code ändern?
structure intest
stuff.l
stuff.f
endstructure
structure test
test.intest[100]
endstructure
Beispiel wäre die Struktur jetzt als "[100lf]" abbildbar. Probier es einfach
mal aus.
Mit meinen Beispielen funktioniert alles. Aber man weiß ja nie. Also immer
schön Bugs reporten.
Warum ReadStructure() bei LinkedLists nicht funktioniert, weiß ich nicht.
Du gibst mir ja kein Beispiel, an dem ich es nachvollziehen kann.
Erstma Danke an NTQ und natürlich an PMV.
So also hier mal ein Auszug meinse Codes (will euch die anderen 2600 Zeilen ersparen):
Wenn ich das Programm ausführe führt der Befehl "Var\s = Space()" zu einem Invalid Memory Access.
[Edit]
Scheine das Problem vorläufig gelöst zu haben, lag daran das ich die Writestrings nicht mit einer Null beendet hab.
[/Edit]
Gruß
Scarabol
So also hier mal ein Auszug meinse Codes (will euch die anderen 2600 Zeilen ersparen):
Code: Alles auswählen
Struc = "lllffdllllsllll"
c = ReadLong(1)
ClearList(Ant())
For i = 0 To c
AddElement(Ant())
ReadStructure(1, Ant(), @Struc)
Next
Code: Alles auswählen
Case 's'
If length
ReadData(FileId, *Var, length)
*Var + length
EndIf
length = ReadLong(FileId)
; ---- hier kommt der Invalid Memory Access
*Var\s = Space(length)
; ----
ReadData(FileId, @*Var\s, length)
*Var + SizeOf(String)
length = 0
EndSelect
Scheine das Problem vorläufig gelöst zu haben, lag daran das ich die Writestrings nicht mit einer Null beendet hab.
[/Edit]
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP