![]() |
D2009: Altes Projekt - String zu ANSI oder UTF8String?
Hey,
wenn ich ein altes Projekt habe, welches ich schnell auf D2009 lauffähig machen möchte, dann kann ich ja praktisch einfach alle Variablen des String Typs nach AnsiString konvertieren, und hinter alle APIs ein A setzen. So meine eigentlich Frage ist jetzt, ob ich AnsiString oder UTF8String verwenden muss und wo genau der Unterschied zwischen den beiden Typen liegt. Gruß Zacherl |
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Das 2. ist ein Unicodetyp das erstere nicht.
|
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Aber trotzdem ein Byte lang?
Aus der D2007 System.pas:
Delphi-Quellcode:
Und bei D2007 hat ein Char im String ja Standardmäßig ein Byte.
type
UTF8String = type string; |
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Der Unterschied zwischen Ansistring und UTF8String besteht in D2009 meines Wissens in der Interpretation von Char(128) bis Char(255). Die Chars in diesem Bereich sind nämlich für unterschiedliche Codepages verschieden, und UTF8String ist als Ansistring mit einer besonderen Codepage, eben der UTF-8 Codepage, implementiert.
|
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Ich habe in meiner D2007 Anwendung per Socket ein Bytearray erhalten, welches einen UTF8 String enthielt. Dann habe ich das Array mit CopyMemory in einen String kopiert und die UTF8 Formatierung wurde automatisch übernommen.
Wenn ich das richtig verstehe, kann ich nichts falsch machen, wenn ich den String als UTF8String deklariere. Sollte halt nur ein AnsiString ankommen würde das keinen Unterschied machen oder? |
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Interessant in diesem Zusammenhang ist auch dieser Artikel:
Zitat:
![]() |
Re: D2009: Altes Projekt - String zu ANSI oder UTF8String?
Das hieße ja ich müsste meinen Zielstring in D2009 als UTF8String deklarieren. Klingt gut .. so langsam verstehe ich die ganze Sache.
Was mich eben verwirrt hat war, um deinen Artikel als Grundlage zu nehmen, dass nur bestimmte Zeichen in der UTF8 Codepage zwei Bytes benötigen, wie z.b. Ä oder sowas. Hierbei hat Length(S) allerdings trotzdem 1 zurückgegeben. Da leuchtet es ein, dass bei der allgemeinen Deklaration in D2007 keine Unterschiede feststellbar sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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