Einzelnen Beitrag anzeigen

Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
445 Beiträge
 
Delphi 10.3 Rio
 
#1

[D2009] Unicode in Ansi wandeln (und umgekehrt)?

  Alt 8. Okt 2008, 16:36
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;
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat