Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ist wahres Unicode mit Delphi überhaupt möglich? (https://www.delphipraxis.net/118422-ist-wahres-unicode-mit-delphi-ueberhaupt-moeglich.html)

Zacherl 7. Aug 2008 21:08

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
* Tiburon haben will :stupid: *

Scheint nur so, als würden dann genau die Leute Probleme bekommen, die gerne mal einen String als Array verwendet haben. Wie ist es eigentlich damit:

Delphi-Quellcode:
SetLength(MyString, DataLen);
CopyMemory(@MyString[1], @Data[0], DataLen);
Wobei Data ein ByteArray ist, in dem jedes Byte ein Zeichen ist? Wird dann vermutlich alles falsch in MyString kopiert und MyString bekommt die doppelte Länge, die nötig wäre, da mit jedem neuen Element 2 Bytes hinzugefügt werden oder?

Gruß Zacherl

Daniel 7. Aug 2008 21:16

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Ich habe es eben ausprobiert. Das geht tatsächlich nur dann, wenn man MyString als "AnsiString" deklariert.

Ich sehe hier allerdings auch kaum Raum für implizite Konvertierungen. "CopyMemory()" ist schon eine Sache für sich. ;-)

// EDIT:

Ich bin mir nicht sicher, ob ich Dich richtig verstanden habe. Das war mein Test-Code:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var MyString : AnsiString;
        data : array[0..4] of byte;
     DataLen : integer;
begin

  DataLen:= SizeOf(Data);
  data[0]:= 72; // H
  data[1]:= 65; // A
  data[2]:= 76; // L
  data[3]:= 76; // L
  data[4]:= 79; // O

  SetLength(MyString, DataLen);
  CopyMemory(@MyString[1], @Data[0], DataLen);

  ShowMessage( MyString );
end;

Zacherl 7. Aug 2008 22:19

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Ah vielen Dank fürs Teste :) War genau das, was ich wissen wollte.

Assertor 8. Aug 2008 10:02

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Zitat:

Zitat von Gausi
Vor der Übernahme durch TMS standen die TNT Unicode Controls unter der LGPL.

Wo hast Du die Info den her? Troy hatte seine Komponente unter einer eigenen, proprietären Lizenz. Vergleichbar MIT/BSD.

Zitat:

Zitat von Daniel
Ich bin von CodeGear autorisiert, diese Beta-Informationen zu veröffentlichen aber auch verpflichtet, diesen Nachsatz stets zu erwähnen.

:zwinker:

Gruß Assertor

Gausi 8. Aug 2008 10:13

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Zitat:

Zitat von Assertor
Zitat:

Zitat von Gausi
Vor der Übernahme durch TMS standen die TNT Unicode Controls unter der LGPL.

Wo hast Du die Info den her? Troy hatte seine Komponente unter einer eigenen, proprietären Lizenz. Vergleichbar MIT/BSD.

:oops: Da hab ich wohl was verwechselt. Hast recht.

Assertor 8. Aug 2008 10:42

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Zitat:

Zitat von Gausi
:oops: Da hab ich wohl was verwechselt. Hast recht.

Ok. Macht ja nichts.

:dp:

p80286 8. Aug 2008 11:03

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Hallo Zacherl,

die Trickser steigen dann einfach von "Array of Byte" auf "Array of Word" um.
Nur die Kompatibilität von "packed Array of Char" mit String ist dann dahin, oder ist Char dann auch ein 16Bit Wert? Wo bleibt dann der 8Bit-Char?

Gruß
K-H

Daniel 8. Aug 2008 11:15

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Der Datentyp Char ist jetzt ein 16bit-Wert. Wer auch künftig den alten Char haben mag, der benutzt AnsiChar/PansiChar.

"packed array of char" und "string" ist in sich wieder konsistent - alles unicode. Kann ich aber gern später mal ausprobieren - bis zum heutigen Tage habe ich das Konstrukt "packed array of char" nie explizit genutzt.

Roaster 8. Aug 2008 11:29

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Zitat:

Zitat von Daniel
Delphi-Quellcode:
[...]
{Auszug aus der System.poas von Tiburón} 
[...]

Heißt die wirklich System.poas jetzt? Wohl eher nicht, war ja augenscheinlich ein eigener Kommentar ;-)

Roaster 8. Aug 2008 11:32

Re: Ist wahres Unicode mit Delphi überhaupt möglich?
 
Zitat:

Zitat von Daniel
In Delphi 2009 ist PChar = PWideChar. Da führt kein Weg dran vorbei. Wenn Du den "alten" Char möchtest, bei dem noch 1 Zeichen = 1 Byte war, dann musst Du explizit PAnsiChar verwenden. Analog gilt Gleiches für Strings.

Daniel, hast du zufällig eine Ahnung, ob Konstrukte wie MeinString[1] noch so funktionieren wie bisher? Man hat dies ja teilweise ausgiebig verwendet um auf die Anfangsadresse des Strings zu verweisen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Seite 3 von 5     123 45      

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