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.