Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   StringReplace geht nicht (https://www.delphipraxis.net/179260-stringreplace-geht-nicht.html)

Hansa 23. Feb 2014 13:43

Delphi-Version: 5

StringReplace geht nicht
 
Moin,

kann mir mal einer sagen, was hier falsch ist?

Delphi-Quellcode:
sl.LoadFromFile ('TEST');
StringReplace (sl.Text,'5','',[rfReplaceAll]);
ShowMessage(sl.text);
An dem sl.Text ändert sich absolut nichts. Die 5 ist nach wie vor da drin.

silver-moon-2000 23. Feb 2014 13:46

AW: StringReplace geht nicht
 
Zitat:

Zitat von Hansa (Beitrag 1249204)
Moin,

kann mir mal einer sagen, was hier falsch ist?

Delphi-Quellcode:
sl.LoadFromFile ('TEST');
StringReplace (sl.Text,'5','',[rfReplaceAll]);
ShowMessage(sl.text);
An dem sl.Text ändert sich absolut nichts. Die 5 ist nach wie vor da drin.

Probier's mal so:
Delphi-Quellcode:
SL.Text := StringReplace (sl.Text,'5','',[rfReplaceAll]);

Perlsau 23. Feb 2014 15:36

AW: StringReplace geht nicht
 
StringReplace ist eine Function und liefert den geänderten String in Result zurück.

DeddyH 23. Feb 2014 16:38

AW: StringReplace geht nicht
 
Mal ganz ehrlich: nach 12 Jahren Forenzugehörigkeit sollte man die F1-Taste aber bedienen können.

Hansa 23. Feb 2014 16:53

AW: StringReplace geht nicht
 
Thx,

tja das kommt davon.
Delphi-Quellcode:
StrToFloat (StringReplace(...
Wenn man sich da nur das StrReplace rauszieht, ohne drüber nachzudenken, was der Rest wohl zu bedeuten hat. :duck:

Wie heisst noch der Compiler-Schalter, um solches Verhalten abzustellen ? :gruebel: Dchlimmer ist allerings, dasss mich das StringReplace sowieso nichts nützt. Es müssen ca. 20 verschiedene Zeichen entfrernt werden, nicht nur eins. Gibts noch was in der Richtung oder muss ich das Zeichen für Zeichen durchgehen ?

sx2008 23. Feb 2014 16:54

AW: StringReplace geht nicht
 
Ich wünsche mir ja schon seit langem ein Schlüsselwort in Delphi mit dem man signalisieren kann dass das Ergebnis einer Funktion zwingend entgegengenommen werden muss.
Delphi-Quellcode:
function StringReplace(const S, OldStr, NewStr: string; Flags: TReplaceFlags): string;pure;
// "pure" bedeutet die Funktion ist frei von Nebeneffekten
// deshalb würde der Aufruf der Funktion wie eine Prozedur als Fehler betrachtet

Union 23. Feb 2014 17:00

AW: StringReplace geht nicht
 
Und ich wünsche mir einen Compilerschalter, der konstante Parameter verbietet oder bei der Verwendung warnt:

Delphi-Quellcode:
GenerateComplicatedOutput('Test.txt', 1, 7.35, 'No') // Sollte nicht zulässig sein
GenerateComplicatedOutput(LFileName, LPageNumber, LFactor, C_NO) // So ist es fein

Hansa 23. Feb 2014 17:12

AW: StringReplace geht nicht
 
Um das Prozedur-/Funtionsverhalten zu beeinflussen, das wäre jedenfalls {$X-}, standardmässig ist das offensichtlich {$X+}

Union 23. Feb 2014 17:21

AW: StringReplace geht nicht
 
Zitat:

Zitat von Hansa (Beitrag 1249220)
Um das Prozedur-/Funtionsverhalten zu beeinflussen, das wäre jedenfalls {$X-}, standardmässig ist das offensichtlich {$X+}

Und schon wird fast Dein gesamter Code nicht mehr compiliert weil Du auch kein result mehr hast.
Delphi-Quellcode:
// Geht nicht
function IstUngleichNull(AInteger : integer) : boolean;
begin
  result := AInteger <> 0;
end;

// Muss dann so sein
function IstUngleichNull(AInteger : integer) : boolean;
begin
  IstUngleichNull := AInteger <> 0;
end;

Hansa 23. Feb 2014 17:42

AW: StringReplace geht nicht
 
Zitat:

Zitat von Union (Beitrag 1249222)
..wird fast Dein gesamter Code nicht mehr compiliert...

Und ob der compiliert wird. Das wäre zwar strenger, aber mehr Arbeit ist das kaum. Der dämliche Fehler hier, den hätte ich mir jedenfalls erspart. 8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz