AGB  ·  Datenschutz  ·  Impressum  







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

Stringreplace aus Textinhalt

Ein Thema von julchen · begonnen am 7. Mär 2021 · letzter Beitrag vom 7. Mär 2021
Antwort Antwort
julchen

Registriert seit: 20. Mär 2008
115 Beiträge
 
Delphi 10.3 Rio
 
#1

Stringreplace aus Textinhalt

  Alt 7. Mär 2021, 09:39
Hallo,

ich möchte eine fehlerhafte Liste korrigieren.
Dazu habe ich eine Delphi-Software, in der nur ich alle Änderungen am Inhalt der Liste vornehmen kann. Damit auch andere Änderungen vornehmen können, dachte ich, ich lagere den Text in eine Datei aus.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  slist: TStringlist;
  liste: String;
  i: integer;
  begin
  slist := TStringlist.create;
  liste := 'liste.txt';
  slist.LoadFromFile(liste);
  for i := 0 to slist.Count -1 do
  begin
    slist.Strings[i] := StringReplace(slist.Text , liste , [rfReplaceAll]);
  end;
  slist.SaveToFile(liste);
  slist.Free;
end;
Die Liste:
Code:
'Mustermann;Max;München','Mustermann;Max;Hamburg'
Das Funktioniert aber nicht.
Fehlermeldung: Keine überladene Version von StringReplace.

Kann mir jemand Helfen?
VG, Julia
Kollegin: Am Wochenende wird mein PC immer langsamer! Liegt das am Strom?
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Stringreplace aus Textinhalt

  Alt 7. Mär 2021, 10:03
Ich hab hier gerade kein Delphi, aber du brauchst für StringReplace 4 Parameter: was soll ersetzt werden, womit soll ersetzt werden, worin soll ersetzt werden und eben die Flags - du hast nur 3 Parameter.
LG aus dem hohen Norden, Edmund
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#3

AW: Stringreplace aus Textinhalt

  Alt 7. Mär 2021, 10:04
Moin...

http://docwiki.embarcadero.com/Libra....StringReplace

Zitat:
StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
Zitat:
StringReplace(slist.Text , liste , [rfReplaceAll]);
...fällt dir was auf?

PS: Ressourcen Schutzblöcke sind enorm wichtig!
Zitat:
Die Anweisung try...finally

In manchen Situationen muss sichergestellt sein, dass bestimmte Operationen auch bei Auftreten einer Exception vollständig abgeschlossen werden. Wenn beispielsweise in einer Routine eine Ressource zugewiesen wird, ist es sehr wichtig, dass sie unabhängig von der Beendigung der Routine wieder freigegeben wird. In diesen Fällen können try...finally-Anweisungen verwendet werden.

Das folgende Beispiel zeigt, wie eine Datei auch dann wieder geschlossen werden kann, wenn beim Öffnen oder Bearbeiten eine Exception auftritt:

Reset(F);
try
... // Datei F verarbeiten
finally
CloseFile(F);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.130 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stringreplace aus Textinhalt

  Alt 7. Mär 2021, 10:30
Es geht auch mit 3 oder 2
Delphi-Referenz durchsuchenStringReplace
Delphi-Referenz durchsuchenReplaceStr / Delphi-Referenz durchsuchenReplaceText
Delphi-Referenz durchsuchenTStringHelper.Replace

(nur nicht wenn man die ReplaceFlags verwenden will)


Aber insgesamt ergibt es irgendwie keinen wirklichen Sinn.
-> Die Liste in sich selbst ersetzen, mit ihrem eigenem Dateinamen.

Und zusätzlich der relative Pfad zur Datei. (sowas macht man nicht, außer die Anwendung soll Suizidgedanken bekommen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Mär 2021 um 10:53 Uhr)
  Mit Zitat antworten Zitat
julchen

Registriert seit: 20. Mär 2008
115 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Stringreplace aus Textinhalt

  Alt 7. Mär 2021, 11:41
Es geht auch mit 3 oder 2

Aber insgesamt ergibt es keinen Sinn.
-> Die Liste in sich selbst ersetzen, mit ihrem eigenem Dateinamen.
Ich habe das mit zwei Dateien hinbekommen. Läuft durch und funktioniert. Aber Du hast recht:
Mit zwei Dateien zu arbeiten bringt so nichts und wäre zu fehleranfällig.
Jetzt muss ich mir was anderes überlegen.

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  slist: TStringlist;
  liste_alt: String;
  liste_neu: String;
  i: integer;
  begin
  slist := TStringlist.create;
  liste_alt := 'c:\users\Julia\documents\embarcadero\studio\projekte\stringreplace\win32\debug\liste_alt.txt';
  liste_neu := 'c:\users\Julia\documents\embarcadero\studio\projekte\stringreplace\win32\debug\liste_neu.txt';
  slist.LoadFromFile(liste_alt);
  for i := 0 to slist.Count -1 do
  begin
    slist.text := StringReplace(slist.Text , liste_alt , liste_neu , [rfReplaceAll]);
  end;
  slist.SaveToFile(liste_neu);
  slist.Free;
end;
Hintergrund:

In der Firma arbeiten die meisten im Homeoffice.
Andere an Standorten.

Die Liste, die ich zum Weiterverarbeiten bekomme, enthält Fehler, wo der Mitarbeiter gerade arbeitet.
Dazu kommen spontane Wechsel zwischen Homeoffice und Standort.
Dazu kommen noch andere Daten, die weiterverarbeitet werden müssen, aber die sind Konstant.

Ich weise erst mal jedem Mitarbeiter das Homeoffice (ca. 95%) zu und mit StringReplace
ändere ich dann von Homeoffice/Stadt oder Stadt/Homeoffice.

Das funktioniert auch soweit, nur muss ich halt das Programm bei Änderungen neu Kompilieren.
Bin ich krank oder im Urlaub, greifen die Kolleginnen wieder zu Ausdrucken und Excel-Dateien
(So, wie sie es gelernt haben und können), um die Daten abzugleichen.
(Wie langsam doch so ein Tag vergeht

Deswegen wollte ich eine Liste mit Namen und Standorten aus dem Programm auslagern.
Man ändert schnell den Standort und der Rest wird wie sonst weiterverarbeitet. Fertig.
Das Program steht. Denn der Arbeitsaufwand, ob ich die Stadt in Delphi oder im Text ändere, ist gleich.
Ich spare mir halt das Kompilieren und die Kolleginnen brauchen mich nicht unbedingt.
Kollegin: Am Wochenende wird mein PC immer langsamer! Liegt das am Strom?

Geändert von julchen ( 7. Mär 2021 um 11:43 Uhr)
  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 17:01 Uhr.
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