Hallo,
ich hab meine Projekte im Zuge der Umstellung von 2007 auf XE2 auch noch nicht vollständig angepasst, und bin natürlich schon mehrfach über dieses Problem / diese Frage gestolpert. Ist es nicht generell so, dass eine Prozedur/Funktion mit string als Parameter auch mit AnsiString klar kommt?
Beispiel:
Delphi-Quellcode:
procedure WriteStringToStream( const AStr : string; AStream : TStream );
begin
AStream.Write(PChar(Astr)^, Length(AStr));
end;
...was meiner bescheidenen Meinung nach die richtige Implementation wäre, weil
AStream.Write( AStr[0] ....
sowieso nicht mehr geht. (Zugriff auf Element 0 nicht möglich oder so ähnlich)
Außerdem hab ich in solchen ähnlichen Fällen bisher die Proceduren mit overload 2x deklariert...beispielsweise also
Delphi-Quellcode:
procedure WriteStringToStream( const AStr : AnsiString; AStream : TStream );
begin
AStream.Write(PAnsiChar(Astr)^, Length(AStr));
end;
Dann ist es egal was ich in AStr übergebe. Bitte korrigiert mich wenn ich falsch liege...so genau kenn ich mich auch nicht aus.