AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String / AnsiString Mischbetrieb

Ein Thema von greenmile · begonnen am 8. Jan 2013 · letzter Beitrag vom 9. Jan 2013
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: String / AnsiString Mischbetrieb

  Alt 8. Jan 2013, 22:02
Wenn Du unter D2009 arbeitest (D7,2005,2006...)
sollte es keine Probleme geben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
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:09
Wenn Du unter D2009 arbeitest (D7,2005,2006...)
sollte es keine Probleme geben.

Gruß
K-H
Laut Profil hat er XE3
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)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: String / AnsiString Mischbetrieb

  Alt 9. Jan 2013, 09:37
hab ich halt nicht nachgesehen.

gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#4

AW: String / AnsiString Mischbetrieb

  Alt 9. Jan 2013, 11:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: String / AnsiString Mischbetrieb

  Alt 9. Jan 2013, 12:14
Ist es nicht generell so, dass eine Prozedur/Funktion mit string als Parameter auch mit AnsiString klar kommt?
Äh nee?
leider hab ich noch keine (bewußt) praktischen Erfahrungen. Aber immer dann wenn Du Dich auf Byte-Ebene begibst, wird es heiß. (Sizeof,length,Char/Byte etc.)
Solange Du Dich auf Textinhalte beschränkst 'Wer Text in C bearbeitet ist selber schuld' sollte keine Probleme bekommen.
Die Typprüfung schlägt je nach vorgabe brutalst zu!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#6

AW: String / AnsiString Mischbetrieb

  Alt 9. Jan 2013, 12:25
Sorry K-H, das hab ich ja prinzipiell genauso gemeint wie du schreibst. Etwa sowas wie...

Delphi-Quellcode:
function LeftPad(S : string; L : Byte) : string;
begin
  Result := S;
  while length(Result) < L do Result := ' ' + Result;
end;
... dürfte mit String und AnsiString klar kommen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: String / AnsiString Mischbetrieb

  Alt 9. Jan 2013, 15:29
Gute Frage, probier's aus. Wenn ich allerdings das bisher gelesene bedenke sollte es gehen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz