Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unit liefert unter D2010 andere Ergebnisse als vorher (https://www.delphipraxis.net/148414-unit-liefert-unter-d2010-andere-ergebnisse-als-vorher.html)

FBrust 1. Mär 2010 17:00


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

daywalker9 1. Mär 2010 17:13

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

wicht 1. Mär 2010 17:20

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

FBrust 1. Mär 2010 17:46

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

jbg 1. Mär 2010 17:57

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.

FBrust 1. Mär 2010 18:50

Re: Unit liefert unter D2010 andere Ergebnisse als vorher
 
Hallo jbg,

funktioniert super, vielen Dank :thumb:


Gruß
Frank

himitsu 1. Mär 2010 19:24

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 09:44 Uhr.

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