AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi suchen,ersetzen und löschen in textdateien
Thema durchsuchen
Ansicht
Themen-Optionen

suchen,ersetzen und löschen in textdateien

Ein Thema von Master-Joko · begonnen am 19. Jun 2004 · letzter Beitrag vom 23. Jun 2004
Antwort Antwort
Master-Joko
(Gast)

n/a Beiträge
 
#1

suchen,ersetzen und löschen in textdateien

  Alt 19. Jun 2004, 12:52
Hi ho mal wieder...

Ich hab momentan ein großes Problem mit meiner Textdatei.

Ich hatte das Forum hier schon zig mal durchstöbert, aber nichts gefunden, was auf mein Problem zutreffend ist.

Ich connecte mich auf einen FTP, und lade mir den Inhalt per List in ein Memo-Feld:

Delphi-Quellcode:
begin
  idftp:=TIdftp.Create(Self);
  idftp.Username:= username_edit.Text;
  idftp.Password:= passwort_edit.Text;
  idftp.Port:=StrToInt(port_edit.Text);
  idftp.Host:= ip_edit.Text;

    try
      Idftp.Connect();
      Idftp.ChangeDir (pfad_edit.Text);


begin

  FTP_Inhalt:=TStringList.Create;

  with Form1 do
  begin

    Memo3.Clear;
    Idftp.Size('*.*');
    IdFTP.List(FTP_Inhalt);
    Memo3.Lines.AddStrings(FTP_Inhalt);
    Memo3.SelectAll;
    Memo3.Lines.SaveToFile('ftp');
    Memo3.Clear;
    IdFTP1.DisconnectSocket;
    Idftp1.Disconnect;
  end;
jetzt kommt mein eigentliches Problem:

Die Datei hat folgenden Inhalt, den ich gerne ändern möchte:

Delphi-Quellcode:
06-17-04 10:53AM 15000000 Test.part01.rar
06-17-04 11:06AM 15000000 Test.part02.rar
06-17-04 11:08AM 766 Icon.ico
06-12-04 06:48AM <DIR> X 40297
06-06-04 03:23AM <DIR> Y 58808
06-12-04 05:12AM <DIR> Z 6106
--> Das Datum und die Uhrzeit sollen immer gelöscht werden
--> Die Zeilen bis <DIR> sollen auch immer gelöscht werden
--> wenn 3 Nullen sind, ersetzen mit KB
--> wenn 6 Nullen sind, ersetzen mit MB

--> ebenfalls bekomme ich es nicht hin, das mir die Größe der SUBDirs (wie X Y Z) in MB angezeigt wird.

Ich hatte es dann mal so probiert, was aber gar nicht klappt:
Delphi-Quellcode:
begin
sl:=TStringList.Create;
try
sl.LoadFromFile('ftp');
for zeilennr:=0 to sl.Count-1 do
begin
  if sl[zeilennr]='000000then
   ReplaceText('MB');
end;
finally
  sl.free;
end;
Die Datei sieht von der Formatierung immer gleich aus. Sie wird auch immer den gleichen Namen besitzen.

Da die Datei nur zum zwischenspeichern und bearbeiten gedacht ist, wird sie bei Programmende auch wieder gelöscht.

Ich wäre euch allen sehr dankbar, wenn man mir hier weiterhelfen könnte.

Ich hatte es vergeblich mit Pos versucht, aber bekam keine Ergebnisse , da ich nicht genau weiß, mit diesem Befehl umzu gehen.

Ebenfalls gibts auch keine genauen Beschreibungen dazu.

Bitte bitte helft mir - ich "klebe" nun schon seit 2Wochen an diesem Problem, hab mir sogar extra das Delphi-buch "Programmieren lernen in Borland Delphi 7" von Walter Doberenz zugelegt.
Aber da stehen wirklich nur kurze Grundlagen drinne....
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: suchen,ersetzen und löschen in textdateien

  Alt 19. Jun 2004, 14:27
wichtige Befehle für dein Problem (gab's aber echt schon häufiger):

delete,pos,stringreplace

Delphi-Quellcode:
str:='123456'
delete(str,1,3); // str='456' ab dem 1. Zeichen wurden 3 entfernt

str:='555000';
str2:=stringreplace(str,'000','kb',[]); // str2='555kb'
                                      // (!) erst nach '000000' suchen und dann nach '000'

str:='000Hallo000';
x:=pos('Hallo',str); // x=4 das erste Zeichen von 'Hallo' steht an 4. Stelle
x:=pos('GutenTag',str); // x=0 SubString wude nicht gefunden
Damit müsstest du's in der Griff bekommen. Bei weiteren Fragen: F1
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Master-Joko
(Gast)

n/a Beiträge
 
#3

Re: suchen,ersetzen und löschen in textdateien

  Alt 23. Jun 2004, 09:06
Ehrlich gesagt, bin ich damit schon überfordert, was nicht bedeuten soll, das ich doof bin

Mein Problem nochmals genauer dargestellt:

Ich benutze zur Zeit 10 Checkboxen, die mit einem Editfeld Namen und Zahlen in einer Vorlage schreiben sollen

Ich öffne eine Txt-Datei, sie wird ins Memofeld gelesen und mit den Checkboxen sollen die "gecheckten" Variablen geändert werden.

Nun soll also nach den Variablen gesucht, und ersetzt werden.

Folgendes Problem: --> wenn die "gecheckten" Variablen nicht im Memofeld, bzw. nicht in der Txt-Datei existieren, schreibt er mir den Inhalt vom jeweiligen Edit-Fenster an Position 1 Zeile 1 ins Memofeld.
Das möchte ich mittels Zeilen und Spaltenzuweisung ändern.

Ebenfalls belässt er die Variablen so wie sie sind, wenn sie nicht "gecheckt" sind.

Ich wollte es aber gern so lösen, das dann die komplette Zeile, in der die Variable steht, gelöscht wird.

Ich mache das Suchen und Ersetzen momentan so:

Delphi-Quellcode:
 begin
  lsl := TStringList.Create;
  try
    lsl.LoadFromFile('Content.txt');

    begin
     lPos := Pos('XIPX', lSL.Text);
     lTemp := lSL.Text; Delete(lTemp, lPos, Length('XIPX'));
     Insert(ip_edit.Text, lTemp, lPos);
     lSL.Text := lTemp; lSL.SaveToFile('test.txt');
     end;
Ich komme halt mit diesem Sch*** Befehl Pos nicht klar.

In der Hilfestellung selbst, gibt es für meine Person nicht genügend Infomaterial.

Und alle Bücher, die ich hab, steht auch nur ne kurze Info zu diesem Befehl.... menno ...

könnte sich denn nochmals jemand um mich, bzw,. um mein Problem kümmern ??? --> Danke
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: suchen,ersetzen und löschen in textdateien

  Alt 23. Jun 2004, 14:33
was ist denn genau dein Problem?

Zitat:
Folgendes Problem: --> wenn die "gecheckten" Variablen nicht im Memofeld, bzw. nicht in der Txt-Datei existieren, schreibt er mir den Inhalt vom jeweiligen Edit-Fenster an Position 1 Zeile 1 ins Memofeld.
Das möchte ich mittels Zeilen und Spaltenzuweisung ändern.
Falls der Substring nicht gefunden wurde, gibt pos 0 zurück. Das kannst du dann abfangen. Wenn du dann was in die dritte Zeile schreiben willst, kannst du das einfach mit
memo1.lines[3]:='Hallo'; machen.

Zitat:
Ich wollte es aber gern so lösen, das dann die komplette Zeile, in der die Variable steht, gelöscht wird.
Dann würd ich eine for-Schleife vorschlagen, die alle späteren Einträge eins nach vorne schiebt und so den zu löschenden Eintrag überschreibt, ohne dass es eine Lücke gibt.

Was ist denn dein Problem mit pos?
Zitat von The Fine Manual:
Die Funktion Pos gibt den Indexwert des ersten Zeichens innerhalb des angegebenen Teil-Strings zurück, der in einem String vorkommt.
Nimm mal mein Beispiel unten und spiel ein bisschen damit rum.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  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 21:27 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