Autor Beitrag
playsta
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 15:26 
Also ich habe das Problem das ich zu erst eine Textdatei einlesen muss .Diese soll dann vom Programm so bearbeitet werden das ein Teil dieser Textdatei durch die Eingabe die in einem Memo feld getätigt wurde ersetzt wird.
danke im vorraus;)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.09 15:27 
Und was ist Deine Frage? :gruebel:
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 15:30 
Die Frage ist wie ich genau vorgehen kann und mit welchen Befehlen ich da am besten arbeiten kann..
Dabei zu berücksichtigen ist das meine Delphikenntnisse wie man vllt merkt relativ begrenzt sind ;)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.09 15:36 
Dieser "Teil der Textdatei" ist aber fix (Zeilennummer)? Oder muss die Zeile anhand des Inhalts erst ermittelt werden? Mehr Infos bitte.
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 15:39 
Also der Teil der Textdatei ist fix also man kann ihn über die Zeile angeben
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.09 15:45 
Und wenn das Memo weniger Zeilen enthält als die Textdatei ab der genannten Zeile, sollen die restlichen Zeilen erhalten bleiben? Beispiel:
Datei
ausblenden Quelltext
1:
2:
3:
4:
5:
Erste Zeile
Zweite Zeile
Dritte Zeile
Vierte Zeile
Fünfte Zeile

Memo
ausblenden Quelltext
1:
2:
Neue Zweite Zeile
Neue Dritte Zeile

Was soll mit den Zeilen 4 und 5 in der Datei geschehen?
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 15:48 
Ja die restlichen müssen erhalten bleiben .
Es soll also nur diese eine Zeile dann ersetzt werden .
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 02.02.09 16:15 
Am einfachsten wird eine TStringList sein. Die erstellst du, dann lädst du die Datei mit LoadFromFile. Danach ersetzt du die Zeilen, speicherst die Datei wieder und entfernst die TStringList aus dem Speicher.

Ein kleiner Einstieg:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  i: Integer;
  FileContents: TStringList;
begin
  FileContents := TStringList.Create;

  FileContents.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Datei.txt'); // Datei im selben Verzeichnis
  // ODER
  FileContents.LoadFromFile(OpenDialog1.FileName); // Im OpenDialog gewählte Datei

  for i := 0 to Memo1.Lines.Count - 1 do
    ShowMessage('Ersetzen: ' + FileContents[i + StartZeileInDerDatei]);

  FileContents.SaveToFile(...
  FileContents.Free;
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 16:59 
Ok danke über zeile klappt, jetzt bräuchte ich das gleiche jedoch noch zeilenunabhängig, sodass man also die Zeilen nach dem Inhalt ermitteln muss.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.09 17:13 
Das ginge z.B. mit TStringlist.IndexOf (bei exakter Übereinstimmung).
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 17:53 
ok.. und bei nicht exakter Übereinstimmung?
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.09 18:00 
Dann müsstest Du in einer Schleife durchgehen und nach Übereinstimmungen suchen (z.B. mit der Pos-Funktion).
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 02.02.09 18:18 
Ok ich versuch es mal aber weitere Tipps oder Vorschläge sind immer herzlich willkommen;)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 03.02.09 03:12 
Du könntest auch direkt im gesamten Text danach suchen. Bei einer StringList FileContents wäre das FileContents.Text. Darin kannst du mit Pos auch direkt suchen.

Die Frage ist was du jetzt eigentlich genau machen willst. An einer durch einen enthaltenen Text bestimmten Stelle einen anderen Text einfügen?
Ist der gesuchte Text ein spezieller Platzhalter, der eindeutig in der Datei ist und komplett ersetzt werden soll z.B.?
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 03.02.09 10:26 
ja es ist wie ein platzhalter.
Um es mit einem Beispiel zu erklären könnte man es so sagen :
Wir ich habe ein formular zb. einen Fehlerprotokoll oder eine Meldung das die angewendedete Anwendung nicht länger ausgeführt werden kann .
Dann soll über ein Memofeld ein Text angegeben werden in den man zB. dann einen eigenen Kommentar dazu abgeben kann.
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 03.02.09 11:19 
Aber zwischendurch nochmal eine vllt ziemlich banale Frage.
Wie öffne ich die neu gespeicherte *.txt- datei dann das sie direkt nach dem einsetzen der neuenAngabe angeeigt wird?
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Di 03.02.09 11:35 
Es besteht ja auch die Möglichkeit zwei Strings mit dem Levenshtein Verfahren zu vergleichen. Dann müssen die Zeilen nicht Wort für Wort übereinstimmen. Du musst dann die Datei bzw. Stringlist Zeilenweise abklappern und die beste Übereinstimmung ermitteln. Schau dir mal folgenden Link an:

www.delphipraxis.net...t=levenshteindistanz

MfG Johannes

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 03.02.09 11:41 
user profile iconplaysta hat folgendes geschrieben Zum zitierten Posting springen:
ja es ist wie ein platzhalter.
Dann kannst du mit Pos auf FileContents.Text angewendet die Position feststellen.

Der neue Inhalt ist dann FileContents.Text von Buchstabe 1 bis zu der Position - 1 plus dein Memo-Text plus FileContents.Text von Position + Länge des Platzhalters bis zum Ende. Das kannst du also mit zweimal Copy lösen.

user profile iconplaysta hat folgendes geschrieben Zum zitierten Posting springen:
Wie öffne ich die neu gespeicherte *.txt- datei dann das sie direkt nach dem einsetzen der neuenAngabe angeeigt wird?
Memo1.Lines.LoadFromFile
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 03.02.09 12:02 
Ok danke versuch ich es erst mal so mit FileContents.Text.:)
Falls ihr aber noch weitere Ideen in richtung Quelltext direkt habt hscreibtse ruhig;)
playsta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Di 03.02.09 12:15 
Da ich blutiger Anfänger bin hab ich noch Probleme das irgendwie in Quelltext umzusetzen ,kann mir das jemand vllt in Quelltext oder zumindestens einen Teil davon in Quelltext darstellen damit ich zuminest wirklich weiß wie ich anfangen soll?