Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Probleme bei der String-Konvertierung (https://www.delphipraxis.net/206987-probleme-bei-der-string-konvertierung.html)

skoschke 15. Feb 2021 11:01

Delphi-Version: 5

Probleme bei der String-Konvertierung
 
Hallo,

ich benutze die Debenu Foxit PDF-Library unter Windows und unter Android.
Die Keys zur Freischaltung funktionieren unter Windows, nicht aber unter Android.

Die Entwickler haben mir folgendes geantwortet:

Because of this the ".so" file expects 32-bit character strings as input.
But you are using the ".so" file in Delphi and Delphi by default uses 16-bit character strings.
So in order to make it work in delphi you have to convert the license key string to 32-bit character set.

Mein Code ist momentan:
Delphi-Quellcode:
var
key : string;
begin
key := 'js5me41f8di7as31z7nd8ob4y';
....

wie bekomme ich den key in ein 32-bit character set?

Danke
Ciao
Stefan

DieDolly 15. Feb 2021 11:59

AW: Probleme bei der String-Konvertierung
 
Ich kenne mich damit nicht gut aus. Aber Delphi und standardmäßig 16-bit-Charakter-Strings?

Uwe Raabe 15. Feb 2021 12:16

AW: Probleme bei der String-Konvertierung
 
Zitat:

Zitat von DieDolly (Beitrag 1482992)
Ich kenne mich damit nicht gut aus. Aber Delphi und standardmäßig 16-bit-Charakter-Strings?

Seit Delphi 2009 gilt: 16-Bit = 2 Byte = Sizeof(Char)

Rolf Frei 15. Feb 2021 13:14

AW: Probleme bei der String-Konvertierung
 
Delphi enthält eine Unit System.Character.pas. Darin gibt es TCharacter.ConvertToUtf32. Damit sollte es eigentlich möglich sein, deinen Delphi String in einen UCS-4 32 Bit String zu konvertieren.

Uwe Raabe 15. Feb 2021 13:36

AW: Probleme bei der String-Konvertierung
 
So etwa in der Art:
Delphi-Quellcode:
var
  key: string;
  key4: UCS4String;
  I: Integer;
begin
  key := 'js5me41f8di7as31z7nd8ob4y';
  SetLength(key4, Length(key));
  for I := 0 to key.Length - 1 do begin
    key4[I] := key.Chars[I].ToUCS4Char;
  end;
end;
Wie man das dann aber weitergibt kann ich auch nicht sagen. Wie sieht das denn unter Windows aus?

himitsu 15. Feb 2021 17:21

AW: Probleme bei der String-Konvertierung
 
Delphi-Referenz durchsuchenWideStringToUCS4String aus http://docwiki.embarcadero.com/RADSt...erungsroutinen

Demo: http://docwiki.embarcadero.com/CodeE...rsion_(Delphi)



Theoretisch hätte man natürlich zuerst Denken können, man nehme einfach TEncoding/MultiByteToWideChar und erzeuge codiere damit die Bytes für UCS-4 bzw. UTF-32, aber
https://stackoverflow.com/questions/...01-12000-12001

skoschke 16. Feb 2021 10:14

AW: Probleme bei der String-Konvertierung
 
Delphi-Quellcode:
key4[I] := key.Chars[I].ToUCS4Char;
funktioniert leider nicht!
[DCC Fehler] Unit5.pas(63): E2018 Record, Objekt oder Klassentyp erforderlich
[DCC Fehler] Unit5.pas(76): E2010 Inkompatible Typen: 'string' und 'UCS4String'

Unter Windows läßt sich die Foxit Library problemlos freischalten.

Was ich aber auch noch festgestellt habe:
Alles funktioniert mit "normalem String" unter Delphi 10.3.3, die Probleme gibt es dann unter Delphi 10.4.1!

Nur muss ich Delphi 10.4.1 benutzen um auch Android 11 Devices unterstützen zu können, mit 10.3.3 compiliert schließen sich die Apps unter Android 11 sofort nach Start wieder!

Ciao
Stefan

Uwe Raabe 16. Feb 2021 10:35

AW: Probleme bei der String-Konvertierung
 
Zitat:

Zitat von skoschke (Beitrag 1483093)
Delphi-Quellcode:
key4[I] := key.Chars[I].ToUCS4Char;
funktioniert leider nicht!
[DCC Fehler] Unit5.pas(63): E2018 Record, Objekt oder Klassentyp erforderlich
[DCC Fehler] Unit5.pas(76): E2010 Inkompatible Typen: 'string' und 'UCS4String'

Hast du System.Character in der uses-Anweisung?

Und was steht in Zeile 76?

Union 16. Feb 2021 13:30

AW: Probleme bei der String-Konvertierung
 
In der Dokumentation steht WideString als Datentyp:

Zitat:

Zitat von debenu
Delphi-Quellcode:
function TDebenuPDFLibrary1811.UnlockKey(LicenseKey: WideString): Integer;


Rolf Frei 16. Feb 2021 16:53

AW: Probleme bei der String-Konvertierung
 
Dann ist aber die Doku und die Interfacdeklaration zur DLL ziemlich falsch. Sowohl WideString als auch wchar_t (C++) ist ein 16 Bit String und nicht UCS4 32 Bit.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:09 Uhr.
Seite 1 von 2  1 2   

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