![]() |
String / MarshaledAString auf Linux-Platform verwenden
Irgendwie stehe ich gerade auf dem Schlauch:
In Delphi 10.2 wird unter der Platform Linux64 ja kein Ansistring mehr unterstützt. In den Posix.stdlib ist die _system wie folgt deklariert:
Delphi-Quellcode:
MarshaledAString ist aber _PAnsiChr.
function _system(Name: MarshaledAString): Integer; cdecl;
external libc name _PU + 'system'; Wie benutzte ich jetzt die _System funktion? Während
Delphi-Quellcode:
funktioniert, funktioniert dagegen NICHT:
_System ('gedit /home/harry/.config/PCN_RS/Accesslist.txt');
Delphi-Quellcode:
Es kommt dann die Fehlermeldung "g: not found", was also darauf hindeutet, dass nur der erste Buchstabe des übergebenen Strings verwertet wurde.
Var
s: string; begin s := 'gedit /home/harry/.config/PCN_RS/Accesslist.txt'; _System (MarshaledAstring (s)); Unter MAC OS funktioniert es übrigens mit _system(PAnsiChar (AnsiString (s))); Wie muss ich das für Linux64 richtig konvertieren? |
AW: String / MarshaledAString auf Linux-Platform verwenden
Ich kann es gerade nicht ausprobieren, aber wie sieht es mit UnicodeToUTF8 oder WideCharLenToStrVar aus, wobei ich bei Linux vermute, dass UTF8 korrekt wäre? Da MarshaledAString nur ein Mapping auf die anderen Typen ist, sollte das doch kompatibel sein und dort verwendet werden können.
|
AW: String / MarshaledAString auf Linux-Platform verwenden
Zitat:
Delphi-Quellcode:
funktioniert.
_System (MarshaledAstring (UTF8String(s)));
Könnte fast schwören, ich hätte das zuvor auch mal probiert, muss aber dann wohl doch was anderes gewesen sein... |
AW: String / MarshaledAString auf Linux-Platform verwenden
PS: ich verwende hier diese Lösung
![]() nachdem ich UTF eingebaut habe klappts auch bei mir |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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