Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: String / AnsiString Mischbetrieb

  Alt 8. Jan 2013, 22:41
Du bekommst Probleme, wenn die Funktion als Parameter einen String entgegennimmt, aber in Wirklichkeit nur für die Verarbeitung eines AnsiString ausgelegt ist.

Beispiel - String in einen Stream schreiben
Delphi-Quellcode:
// Arbeitet ganz toll mit Delphi < D2009
procedure WriteStringToStream( const AStr : string; AStream : TStream );
begin
  AStream.Write( AStr[1], Length( AStr ) );
end;
Hierfür gibt es jetzt 2 Möglichkeiten das umzuschreiben
  1. Deklaration anpassen
    Delphi-Quellcode:
    procedure WriteStringToStream( const AStr : AnsiString; AStream : TStream );
    begin
      AStream.Write( AStr[1], Length( AStr ) );
    end;
  2. Source anpassen
    Delphi-Quellcode:
    procedure WriteStringToStream( const AStr : string; AStream : TStream );
    begin
      AStream.Write( AStr[1], Length( AStr ) * SizeOf( Char ) );
    end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 9. Jan 2013 um 14:25 Uhr)
  Mit Zitat antworten Zitat