Hallo zusammen!
Ich hab nun mit D2009 einwenig gespielt und meine Libraries zu großen Teilen portiert. Übrig geblieben ist momentan die Frage, wie man korrekt
Unicode Strings in
ANSI-Strings zurückwandelt, wenn das von einer Funktion benötigt wird. Bzw. wie
Ansi-Strings in Strings zu wandeln sind. Als Beispiel mag folgende Routine dienen:
Delphi-Quellcode:
Type
PPInAddr= ^PInAddr;
Function GetIpFromName(const Lines:TStrings; const AHost: String): Boolean;
Var
iWSA: TWSAData;
HostInfo: PHostEnt;
Addr: PPInAddr;
s: AnsiString;
Begin
Result := False;
If WSAStartUp(CSTACK_VERSION, iWSA) = 0 Then
Begin
s := AHost; // <- Warning! [DCC Warnung] iphlp.pas(125): W1058 Implizite String-Umwandlung mit potenziellem Datenverlust von 'string' zu 'AnsiString'
s := AnsiString(AHost); // <- korrekt???
HostInfo:= GetHostByName(PAnsiChar(s));
Result:=HostInfo <> NIL;
If Result Then
Begin
Addr:=Pointer(HostInfo^.h_addr_list);
If (Addr <> NIL) And (Addr^ <> NIL) Then
Begin
Repeat
Lines.Add(StrPas(inet_ntoa(Addr^^)) ) ; // <- Warning: [DCC Warnung] iphlp.pas(134): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string'
Lines.Add( String(StrPas(inet_ntoa(Addr^^))) ) ; // <- korrekt?
Inc(Addr);
Until Addr^ = NIL;
End;
End;
WSACleanup;
End;
End;