![]() |
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
Ich bin aber überzeugt, daß es bessere und vor allem stabilere Lösungen gibt. |
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
Zitat:
Gruß K-H |
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
Ps: Ich will damit sagen, nur weil beides reinpasst bedeutet das nicht das beides funktioniert. |
AW: ANSISTRING unter Linux verfügbar ???
Nein. Das bedeutet, dass es solange er keine OS-Funktionen aufruft, egal ist wie das OS Strings verwaltet. Er interpretiert den Speicherinhalt als eine Zeichenkette, in der jedes Zeichen 1 Byte belegt.
|
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
UTF8String ist ein AnsiString mit UTF-8 als CodePage (CP_UTF8) Ich glaub es gab noch einen vordefinierten AnsiString mit CP_OEM, welchen man für Consolenanwendungen verwenden würde. Und AnsiString ist halt ein AnsiString mit der aktuellen System-CodePage (ANSI). Darum wäre ich auch davon ausgegangen, dass es unter NextGen den RawByteString ebenfalls nicht gibt. Nicht RawByteString ist der Vorfahre sondern der ältere AnsiString, von dem RawByteString abgeleitet wird. |
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
Der Windows-Compiler verarbeitet aber AnsiString anders als RawByteString, auch wenn man keine OS-Funktionen aufruft. Eine Umstellung von AnsiString nach RawByteString kann also ein anderes Verhalten auslösen, erstmal unabhängig vom Zielsystem. Wenn dann aber über IFDEF unter Windows AnsiString und unter Linux RawByteString verwendet wird, hat man dieses unterschiedliche Verhalten eben abhängig vom Zielsystem, was zumindest die Fehlersuche erschweren könnte. Da wir immer noch nicht wissen, wie aktuell die AnsiStrings unter Windows eingesetzt werden, kann man auch keine Aussage darüber treffen, ob RawByteString ein funktionaler Ersatz sein kann. |
AW: ANSISTRING unter Linux verfügbar ???
Meine Antwort bezog sich auf KodeZwergs Antwort.
|
AW: ANSISTRING unter Linux verfügbar ???
Uwe hat schon irgendwie Verstanden wie ich es meinte, solange nichts vom TE kommt geb ich euch allen Recht, ich lag falsch und halte mich hier raus.
|
AW: ANSISTRING unter Linux verfügbar ???
hier weitere Informationen zur Verwendung :
Ansistring wird in einigen DLLs verwendet um Daten von C++ , Matlab und Delphi auszutauschen , im reinen Delphi Kernprogramm in Funktionen wie im Beispiel
Delphi-Quellcode:
Ziel OS : entweder Windows x64 oder UBUNTU x64 , vermutlich sind die Daten meistens ASCII ...FS: TFileStream; SaveString: Ansistring; begin FS := TFileStream.Create(FileName, fmCreate); try if SaveString <> '' then FS.Write(Pointer(SaveString)^, Length(SaveString) * SizeOf(AnsiChar)); finally FS.Free; end; ist diese Variante für Cross PLatform Daten typen klarer oder eher undurchsichtig ?
Delphi-Quellcode:
type AnsiString = {$ifdef MSWINDOWS} Ansistring {$endif } {$ifdef LINUX} RawByteString {$endif } |
AW: ANSISTRING unter Linux verfügbar ???
Zitat:
AnsiString setzt immer auch ein Encoding voraus. Wenn man das nicht kennt, kann man die Bedeutung des Inhalts manchmal nur erraten. Bei AnsiString kann man die zu verwendende CodePage angeben, wie z.B. hier:
Delphi-Quellcode:
Bei einer (auch impliziten) Zuweisung string <-> AnsiString wird diese CodePage für die Umwandlung verwendet. Damit werden dann Zuweisungen dieser Art vollkommen transparent vom Compiler erledigt:
const
cEBCDICCodePage = 1141; type EBCDICString = type AnsiString(cEBCDICCodePage);
Delphi-Quellcode:
Fehlt die Angabe einer CodePage (z.B. bei Deklaration als AnsiString) wird die aktuelle CodePage von Windows genommen. Ohne Windows gibt es diesen Default aber nicht. Womöglich ein Grund für das Fehlen von AnsiString bei diesen Compilern.
var
myString: string; myEBCDIC: EBCDICString; begin myString := 'Hallo Welt'; // Unicode myEBCDIC := myString; // Unicode -> EBCDIC myEBCDIC := 'Hallo Welt'; // Unicode -> EBCDIC myString := myEBCDIC; // EBCDIC -> Unicode end; Sollten Umwandlungen nicht vorkommen (was eventuell gar nicht so einfach herauszufinden ist), kann vielleicht alternativ RawByteString verwendet werden. In jedem Fall geht aber TBytes und bei der Umwandlung dann TEncoding verwenden. RawByteString ist also nur für einen Teil der Anwendungsmöglichkeiten geeignet, während TBytes immer geht. Daher würde ich TBytes den Vorzug geben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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 by Thomas Breitkreuz