txt-Datei schreiben, float mit Kommazeichen
-
ich verwende den Borland Builder 5.
-
StringReplace gab es schon vor dem BCB2007.
-
der BCB6 kanns auch nicht und ich weiß nicht obs ne Version dazwischen gibt[Edit] verwechselt mit StrictDelimiter
-
ja in der Hilfe taucht die Funktion auf.
Habe mal einen Test gemacht:AnsiString s = "Test"; StringReplace(s , "T", "F", rfReplaceAll);
erhalte dann flg. Fehlermeldungen:
[C++ Fehler] Unit1.cpp(33): E2034 Konvertierung von 'SysUtils__24' nach 'TReplaceFlags' nicht möglich [C++ Fehler] Unit1.cpp(33): E2342 Keine Übereinstimmung des Typs beim Parameter 'Flags' ('TReplaceFlags' erwartet, 'SysUtils__24' erhalten)
ich würde dann, wenn das funktioniert mit einer Schleife meine STrings in der Stringliste durchlaufen und alle "." durch "," ersetzen. zB so:
void __fastcall TForm1::btnErsetzenClick(TObject *Sender) { for (int i=0; i< stl->Capacity; i++) StringReplace(stl->Strings[i] , ".", ",", rfReplaceAll); }//stl ist die StringList
-
Das würde eher so gehen
StringReplace(s , "T", "F", TReplaceFlags() << rfReplaceAll)
-
ah ok. Hab das mal so mit der Schleife probiert. Leider bekomm ich dann flg. Fehlermeldung: EStringListError, index überschreitet das Maximum.... oder so
Ich hab so ca. 1400 Strings in der Stringliste. Wo liegt denn das Maximum. Ich hab wohl die Grenze überschritten.
edit: ich glaub ich habs gefunden: ich darf in der Schleife nicht capacity nehmen. count ist hier die Lösung. Dann funktioniert es.
Problem gelöst... mein programm kann nun dateien einlesen und alle punkt durch komma ersetzen und neu speichern. vielen dank für die hilfe...
-
Nein, die Fehlermeldung bedeutet, dass du außerhalb der Arraygrenzen arbeitest. Sprich 1400 Einträge sind in der Liste, aber du greifst auf den (nicht existierenden 1401 Eintrag zu.
Zeig mal die Schleife, da ist irgendwo ein Fehler drin...
-
for (int i=0; i< stl->Capacity; i++) StringReplace(stl->Strings[i] , ".", ",", rfReplaceAll);
Du brauchst keine for Schleife
StringReplace ersetzt alle "." nach "," im gesamten Text
stl->Text = StringReplace(stl->Text , ".", ",", TReplaceFlags()<< rfReplaceAll);
-
Warum Capacity und nicht Count? Seh ich keinen wirklichen Sinn drin (auch wenn beides wohl zum gleichen Ergebnis führt, aber die Strings oberhalb von Count sind leer, warum sollte er da durchiterieren?).
Und unabhängig davon, ob die Schleife notwendig ist, oder nicht. Er hat einen Fehler in der Schleife und vielleicht will er wissen, was er falsch gemacht hat...
-
@Million Voices
das hast du wohl überlesen...rudpower schrieb:
edit: ich glaub ich habs gefunden: ich darf in der Schleife nicht capacity nehmen. count ist hier die Lösung. Dann funktioniert es.
Problem gelöst... mein programm kann nun dateien einlesen und alle punkt durch komma ersetzen und neu speichern. vielen dank für die hilfe...
-
VergissEs schrieb:
@Million Voices
das hast du wohl überlesen...Nix da, das hat da schlicht und ergreifend noch nicht gestanden, als ich angefangen hab, meine Antwort zu tipseln...
Aber zumindest hab ich jetzt auch noch was gelernt (Capacity vs. Count).
-
<Klugscheißermodus AN>
Zuletzt bearbeitet von rudpower am 24 Jan 2011 15:20, insgesamt 1-mal bearbeitet
Million Voices 25 Jan 2011 10:52 schrieb ....
<Klugscheißermodus ENDE>
Das war schon da
-
[Rausred]
So gesehen hast Du recht. Ich hab das Edit tatsächlich nicht gesehen, bevor du mich drauf hingewiesen hast. Kann man mir aber, glaube ich, nicht wirklich zur Last legen, dumm gelaufen, mit dem fast zeitgleichen Edit und meinem Post. Als ich mir die Vorschau zu meinem Post angesehen habe, war da jedenfalls noch die uneditierte Version. Und danach habe ich dann auch nicht mehr auf Seite 1 geschaut...
[/Rausred]Aber ich nehm's auf meine Kappe, hast ja recht, ich hab das Edit nicht gelesen. Schande auf mein Haupt.