![]() |
Unicode Problem
Hallo...
ich stelle eine Delphi 5 Anwendung auf Delphi 2010 um. an einer Stelle habe ich ein Problem. Ich muss mir einen "String" aus eine DLL holen. (die DLL ist älter und KEINE Unicode DLL) Der Aufruf ist wie folgt definiert Procedure CadLayerGetName (hLayer: Integer; szName: Pointer); stdcall; external 'vecad.dll'; In Delphi 5 habe ich das wie folgt gemacht: procedure xxxx; var Buf: array[0..128] of Pchar; begin CadLayerGetName (lhnd,@buf); end; Das klappt natürlich in Delphi 2010 nicht..... aber ich finde auch keinen rechten Ersatz. Entweder erhalte ich Schrott Zeichen oder mein Prog. stürzt ab. Grüße J. Richmann ![]() |
AW: Unicode Problem
Schon PAnsiChar probiert?
Sherlock |
AW: Unicode Problem
Zitat:
Eigentlich würde ich
Delphi-Quellcode:
erwarten.
array of char
Das müsste zu
Delphi-Quellcode:
werden, dann bleibt nur noch, da einen Unicode-String draus zu machen.
array of Byte
|
AW: Unicode Problem
Delphi-Quellcode:
, da es so in der alten DLL deklartiert wurde.
array of AnsiChar
Und genau deswegen nimmt man keine dynamischen Typen für derartige Definitionen:!: > Datenübertragung/-speicherung Nur AnsiChar, WideChar, aber kein Char, welches sich je nach Compiler oder Zielumgebung unterscheiden kann. |
AW: Unicode Problem
Zitat:
Sherlock |
AW: Unicode Problem
Zitat:
Integer (die wurden ja nun eingefrohren und statdessen in Delphi die Native-Typen eingeführt) Cardinal NativeInt NativeUInt IntPtr Pointer und alle sonstigen Zeiger Char PChar String Real String[123] ist ein ShotString. Dieser ist ANSI geblieben und es gibt keine UnicodeVersion davon. Ganz früher (z.B. in Delphi 1) war "String" noch das, was jetzt der ShortString ist ... bis dann die LongStrings (AnsiString, UnicodeString, sowie die von AnsiString abgeleiteten Typen ala UTF8String und RawByteString) eingeführt wurden. |
AW: Unicode Problem
...und nur wer den VCL Quellcode rückwärts runterbeten kann, ist ein ernstzunehmender Entwickler. Aber das hier wird OT. Und ich gebe mich geschlagen.
:) Sherlock |
AW: Unicode Problem
Vielen Dank für die vielen Antworten...
ich habe es jetzt mit einem Array of Byte gelöst. Die Bytes konvertiere ich dann in einen String. Irgendwie hat alles andere nicht richtig geklappt. Grüße J. Richmann ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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