Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jedoch. (https://www.delphipraxis.net/213937-schreiben-von-record-daten-funktioniert-das-lesen-von-record-daten-scheitert-jedoch.html)

paule32.jk 21. Okt 2023 19:30

schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jedoch.
 
Hallo,
wie der Titel des Themas schon vermuten läßt:
in Zeile: 153 bekomme ich eine AV vom Programm (in der Zeile 153).
aber ich weiß nicht, was der Grund ist.
kann da jemand weiterhelfen?
danke!

https://dpaste.com/4VPURFVR6

Delphi.Narium 21. Okt 2023 20:16

AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
 
Weil es sich um einen Record und nicht um ein Array handelt?
Oder das Array nicht (sinnvoll) initialisiert ist?

blawen 21. Okt 2023 20:44

AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
 
Instructions ist ein Dynamisches Array, welches vermutlich nicht richtig initialisiert wurde.
In Deinem (unübersichtlichen) Quellcode ist der Ablauf relativ schwierig nachvollziehbar.

Wenn Du hier ein lauffähiges Testprojekt hochladen würdest, wird es einfacher, Dir weiterzuhelfen.
Siehe auch #10 im anderen Tread.

DocWiki

himitsu 22. Okt 2023 10:31

AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
 
Warum immer wieder neue Threads,
https://www.delphipraxis.net/213934-...ppt-nicht.html
https://www.delphipraxis.net/213935-...-new-post.html
https://www.delphipraxis.net/213937-...-new-post.html
anstatt das eigentliche Problem endlich zu lösen?
https://www.delphipraxis.net/213929-...ml#post1528456

Kas Ob. 22. Okt 2023 11:04

AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
 
@Paul,
I think your problem is in your assumption about Pascal language and its types and expressions, most likely you are used to be a programmer in different language(s), and assuming Pascal will do the same, eg. Pascal is strongly typed and more strict than C(++).

In Pascal you can't switch any type into indexed one freely at your wish, you must declare an indexed type then use it as indexed one, though it is possible but highly not recommended, eg. casting is powerful but very dangerous and easily will allow you shoot your foot, pretty please don't try it before understand the difference.

So, take a break from coding and get familiar with arrays and records, and most importantly the managed and unmanaged types in Pascal/Delphi, you will save a lot of time, and at least your question will be right on point.

Blup 24. Okt 2023 09:10

AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
 
Delphi-Quellcode:
var
  Instructions: Array of TInstruction;
Eine Variable für ein dynamisches Array enthält nicht den Speicherbereich der die Daten der einzelnen Elemte des Arrays enthält.
Die Variable enthält nur einen Zeiger auf diesen Speicherbereich, da sich dessen Position im Speicher z.B. bei Änderung der Größe verschieben kann.
Delphi-Quellcode:
sizeof(Instructions)
ergibt immer 4 bei einen 32Bit-Programm bzw. 8 bei 64Bit.

Die Anzahl der Elemente des Arrays ermittelt
Delphi-Quellcode:
Length(Instructions)
.
Die Größe eines Elements im Speicher
Delphi-Quellcode:
sizeof(TInstruction)
oder
Delphi-Quellcode:
sizeof(Instructions[0])


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz