![]() |
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! ![]() |
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? |
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 ![]() ![]() |
AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
Warum immer wieder neue Threads,
![]() ![]() ![]() anstatt das eigentliche Problem endlich zu lösen? ![]() |
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. |
AW: schreiben von RECORD-Daten funktioniert. Das lesen von RECORD-Daten scheitert jed
Delphi-Quellcode:
Eine Variable für ein dynamisches Array enthält nicht den Speicherbereich der die Daten der einzelnen Elemte des Arrays enthält.
var
Instructions: Array of TInstruction; 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:
ergibt immer 4 bei einen 32Bit-Programm bzw. 8 bei 64Bit.
sizeof(Instructions)
Die Anzahl der Elemente des Arrays ermittelt
Delphi-Quellcode:
.
Length(Instructions)
Die Größe eines Elements im Speicher
Delphi-Quellcode:
oder
sizeof(TInstruction)
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