Einzelnen Beitrag anzeigen

hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Bedenkliche Typumwandlung AnsiString in PWideChar

  Alt 7. Apr 2017, 12:44
Delphi-Version: 10 Seattle
Ich bin leider gezwungen, eine .dll zu Nutzen, dessen Signatur eine IP-Adresse in PChar verlangt:
Code:
IPS7Open (IPAdr : PChar; Rack : LongWord; Slot : LongWord; RxTimeout : LongWord; TxTimeout : LongWord ; ConnectTimeout : LongWord) : LongInt; stdcall; external 'IPS7LNK.DLL';
Diese Compiler-Warnung verfolgt mich schon lange im Schlaf, da ich trotz langer googlereien keine Moeglichkeit finde, galant zu Typen/Casten.
Code:
[dcc32 Warnung] TCP.pas(170): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString'
Mein aktueller Aufbau abstrahiert
Code:
var
  IP: AnsiString;
  IPvonAusserhalbEingelesen: String;
begin
  //...
  IP := AnsiString(IPvonAusserhalbEingelesen);
  Connection.ref := IPS7Open( PChar(IP), Connection.Rack { ... } );
Natuerlich kann ich die Signatur der .dll nicht aendern. Was ist die eleganteste Loesung die Warnung loszuwerden?
Ich hab die Zeile Connection.ref := {...} mal mit
Code:
{$WARN IMPLICIT_STRING_CAST OFF}
{$WARN IMPLICIT_STRING_CAST_LOSS OFF}
und ON ON ummantelt, kriege die Warnung aber trotzdem. Ich habe noch nicht oft mit CompilerFlag-Aenderungen On-The-Fly gearbeitet. Wahrscheinlich muss ich die woanders setzen...

Schoener waere natuerlich eine "echte" Loesung anstatt einfach die Warnung wegzumogeln.

Geändert von hzzm ( 7. Apr 2017 um 12:47 Uhr)
  Mit Zitat antworten Zitat