![]() |
unerwatete Ergibnisse in Variablen
Hallo Forum,
ich habe Delphi 10.3.3 und Windows 10. Meine Procedure xyz bringt unerwartete Ergebnisse: Die procedure rufe ich zuerst in Form1 auf. Das Ergibnis stimmt. (hw2=255) Dananch rufe ich die procedure in Form2 auf. Auch hier stimmt das Erginis. (hw2=255) Dann gehe ich wieder zurück in Form1 und rufe die procedure auf. Das Ergibnis stimmt nicht mehr. (hw2=-16129) ha.dbyte1 ist in allen Fällen immer 255.
Delphi-Quellcode:
Hat jemand eine Idee?
type tdb1bytearray = record
dbyte1: Byte; end; procedure Form1.xyz var ha: tdb1bytearray; var hq2: ^SmallInt; var hw2: SmallInt; var h1: integer; begin h1:=FileRead(h2, ha, 1); h1:=Ord(ha.dbyte1); if h1 > 127 then begin hq2:=@ha; hw2:=hq2^; if hw2 <> 255 then fdsreturn:=36; end; end; Danke und Gruß Jürgen |
AW: unerwatete Ergibnisse in Variablen
Ha ist 1 Byte groß und hat ein Zeiger auf 2 Byte...
|
AW: unerwatete Ergibnisse in Variablen
Was ist h2?
Was ist fdsreturn und warum initislaisiert das niemand? Was passiert, wenn es kein Byte mehr in der Datei gibt? niemand Werte das erste h1 aus. (warum hört niemand auf den Debugger? ) Und wer kommt aus die saublöde Idee einen 1-Byte-Typ auf einen 2-Byte-Typen zu casten, ohne sich zu fragen, wo um himmels Willen das nichtvorhandne Byte her kommt? (was somit undefiniert/zufällig ist) Für 255 ist dieser Cast eh total nutzlos. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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 by Thomas Breitkreuz