![]() |
Unit liefert unter D2010 andere Ergebnisse als vorher
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
in einem Programm werden im Rahmen der Konfiguration die Namen der installierten Handheld-Geräte (hier Palms) ermittelt und in eine Combobox gestellt. Dazu habe ich bisher die Unit "TPalmUserData" verwendet, die unter Delphi 7 einwandfrei funktioniert hat. Seit das Programm mit Delphi 2010 kompiliert wird, kommen nur noch unlesbare Strings raus (s. Screenshot). Hat vielleicht jemand einen Tip, woran das liegen könnte? Die Unit liegt mir im Quelltext vor, arbeitet aber viel mit Pointern und da bin ich zugegebene nicht sooo firm drin :( Gruß Frank |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Wird ja vielleicht was von String auf AnsiString zugeweisen o.ä?`
Weil dort kann ein Problem unter D2010 geben, da ja String voll Unicodefähig ist und AnsiString eben nur ANSI anzeigt. Wenn du dann String auf AnsiString zuweißt, kann da schon mal was komisches bei rauskommen. Ansonsten Poste doch mal dein Code |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Hi!
Eine schnelle und nicht so schöne Lösung könnte sein, jegliche Vorkommen von "string" in deiner Unit durch "AnsiString" zu ersetzen. Sauber wäre es vermutlich, die Funktion, die die Gerätenamen ausließt, anzupassen. Die müsstest du dann aber eventuell mal herzeigen :) HTH |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
die Unit ist ca. 10 Jahre alt, hat aber wie gesagt, bisher funktioniert, ich häng die Unit mal an. Gruß Frank |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Liste der Anhänge anzeigen (Anzahl: 1)
Im Record musst du das "array[0..x] of Char" als "array[0..x] of AnsiChar" umdeklarieren. Denn Char ist nun 2 Byte groß womit die Datenstruktur nicht mehr zur Datei passt. Mit AnsiChar hat man das Verhalten von Delphi 1 bis 2007 an dieser Stelle wieder.
Die überarbeitete Version der Unit findest du im Anhang. |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Hallo jbg,
funktioniert super, vielen Dank :thumb: Gruß Frank |
Re: Unit liefert unter D2010 andere Ergebnisse als vorher
Und genau deswegen kann ich es nur immer wieder sagen:
Bei externen Daten (Datenübertagung oder Speicherung) nur statische Typen verwenden, also kein String, Char, Integer. Stattdessen AnsiString, WideString, UnicodeString, AnsiChar, WideChar, LongInt usw. und am Besten auch nur packed Records verwenden oder für eine definierte Ausrichtung suchen. Und eine Bescheibung ala "bisher hat es immer funktioniert" sagt garnichts aus ... vorallem nicht dann, wenn etwas Grundsätzliches, wie der Compiler oder die CL getauscht wird. Auch wenn Delphi relativ abwärtskompatibel ist, muß dennoch nicht alles Verwendete immer laufen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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