Autor Beitrag
Dark-§hadow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Mi 12.09.07 23:50 
Hallo Zusammen!

Ich versuche bzw. sucher derzeit folgendes:

Das Programm soll
-Eine .txt einlesen
-jede Zeile scannen und nach dem Doppelpunkt alles in der Zeile löschen
-In eine neue .txt einspeichern (meinetwegen eingelesen: bla.txt ausgabe: bla_bearbeitet.txt

Könnte mir hierfür jemand vielleicht schnell Hilfestellung geben? Ich habe mich noch nie an Text-und Stringverarbeitung vergriffen und bräuchte dieses Programm nun kurzfristig.

Beispiel bla.txt:
123.3435.123 :55
123.453.123 :2000

==> Bla_bearbeitet.txt
123.3435.123
123.453.123

MfG
Dark-§hadow


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Mi 12.09.2007 um 23:53
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Mi 12.09.07 23:53 
An welcher Stelle kommst du nicht weiter bzw. was hast du schon? :)

Edit:
Zerlege dein Problem in Teilprobleme.
1. Textdatei öffnen.
2. Zeile auslesen.
3. Doppelpunkt suchen.
4. Text hinter Doppelpunkt löschen.
5. Textdatei speichern.

MfG
freak

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen


Zuletzt bearbeitet von freak4fun am Mi 12.09.07 23:55, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 12.09.07 23:53 
Schau mal nach Pos und Copy. Damit solltest Du weiter kommen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:02 
Also ich habe bereits das Einlesen ^^

Var
Liste :TStringList;

und dann hab ich noch...

Liste.Loadfromfile('bla.txt'); (wobei es mir lieber wäre, würde man ein lib-Überblick bekommen, und die .txt raussuchen)

Mein Problem ist erstmal, dass er jede Zeile durchläuft, nach : sucht und (mit :) alles, was in der zeile noch folgt, einfach löscht.

//Edit@Freak4Fun: Das Speichern wird auch kein Problem denke ich (Liste.SavetoFile('bla_bearbeitet.txt'));
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 13.09.07 00:07 
user profile iconDark-§hadow hat folgendes geschrieben:
Also ich habe bereits das Einlesen ^^

Var
Liste :TStringList;

Das ist doch schonmal ein Anfang. ;)

user profile iconDark-§hadow hat folgendes geschrieben:
Liste.Loadfromfile('bla.txt'); (wobei es mir lieber wäre, würde man ein lib-Überblick bekommen, und die .txt raussuchen)


Du kannst zum Beispiel den OpenDialog benutzen:
ausblenden Delphi-Quelltext
1:
2:
if Opendialog1.Execute then
  mytxt := Opendialog1.Filename;


user profile iconDark-§hadow hat folgendes geschrieben:
Mein Problem ist erstmal, dass er jede Zeile durchläuft, nach : sucht und (mit :) alles, was in der zeile noch folgt, einfach löscht.

In der Stringlist sind nun Strings, die du über eine Schleife ansprechen kannst.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := 0 to Liste.Count - 1 do
  begin
    Liste.Strings[i] 
    ...
  end;


Ich hoffe das hilft dir weiter. ;)

MfG
freak

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
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: Do 13.09.07 00:11 
Erstens: Nimm keine relativen Verzeichnisse, das gibt nur Probleme, weil das das aktuelle Arbeitsverzeichnis benutzt und wenn dieses nicht das deiner Anwendung ist, wäre das schlecht, wenn die Datei dort liegt, was aber mit einem TOpenDialog kein Problem ist, denn das Aussuchen der Datei kannst du mit einem TOpenDialog machen, damit kann der Benutzer eine Datei auswählen.

Dann zur zeilenweisen Analyse: Weißt du was eine for-Schleife ist? Damit geht das.
// Ich seh gerade, dass da schon eine Antwort mit Beispiel kommt, da kann ich mir das sparen^^
Zur Analyse der Zeile selbst hat user profile iconChristian S. ja schon die Befehle gepostet, wenn du die nicht verstehst, dann frag bitte. Denn wenn du verstanden hast, was die machen, könntest du es auch hinbekommen.

Ansonsten poste einfach wieder den Quelltext wie weit du gekommen bist und was du z.B. an den Befehlen Pos und Copy nicht verstehst...


Zuletzt bearbeitet von jaenicke am Do 13.09.07 00:12, insgesamt 1-mal bearbeitet
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:12 
Ja, danke auf jeden Fall, aber den eigentlichen Qu, wofür ich die Hilfe brauch, ist ja des Suchen & Löschen, des bekomm ich wie gesagt nicht hin.
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:24 
Also das aktuelle Arbeitsverzeichnis ermittelt man mit folgendem Befehl:
ausblenden Delphi-Quelltext
1:
openDialog.InitialDir := GetCurrentDir;					


Natürlich weiß ich, was eine For-Schleife ist ;) in dem Fall wird zum integer i:= 0
immer ein Zähler hinzugefügt, bis er alle Reihen (Liste.Count) durch hat. Nur stehe ich immer noch vor dem Pos- und CopyProblem.
Position ermittelt die Position, die speichert man dann i-wo in eine Zwischenvariable, dann soll mit copy ab da alles gelöscht werden... x_X helft mir bitte

//Edit: Entschuldigt den Doppelpost.

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
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: Do 13.09.07 00:28 
Das stimmt bis
user profile iconDark-§hadow hat folgendes geschrieben:
dann soll mit copy ab da alles gelöscht werden...
;-)
Es reicht den gewünschten Teil herauszukopieren ;-).
ausblenden Delphi-Quelltext
1:
ZweiteStringList[i] := Copy(ErsteStringList[i], 1, Pos('Trennmarkierung', ErsteStringList[i]) - 1);					
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:35 
Jaenicke kommentierst du vielleicht nochmal deinen meisterhaften Befehl? ;) Verstanden hab ich ihn zu 90% schon, aber da fehlen noch 10 ^^

Desweiteren taucht folgendes Problem beim versuchten Einlesen auf
ausblenden Delphi-Quelltext
1:
2:
3:
if Opendialog1.Execute then
mytxt := Opendialog1.Filename;
Liste.Loadfromfile(mytxt);

Mit Verweis auf Liste.Loadfromfile (mytxt);

Was mach ich falsch? =(

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 13.09.07 00:38 
Bitte nimm dir etwas mehr Zeit zum Erstellen deiner Antworten/Posts. Ich weiß teilweise nicht was du willst. Auch sind deine Posts ungenau und teilweise unvollständig. :twisted: Du erwatest von uns auch aussagekräftige Antworten. ;)

Edit:
Gehe mit dem Mauscurser auf das Wort "Copy" in deinem Quelltext und drück F1. ;)

MfG
freak

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
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: Do 13.09.07 00:43 
Die von mir gepostete Zeile macht folgendes:
Pos('Trennmarkierung', ErsteStringList[i]) gibt dir ja die Position von 'Trennmarkierung' im der i-ten Zeile der ersten Stringliste zurück. Copy kopiert alles aus dem angegebenen String von der ersten Stelle bis zur zweiten Stelle, in diesem Fall von Buchstabe eins bis Buchstabe Pos('Trennmarkierung', ErsteStringList[i]) - 1, was ja das Zeichen vor der Trennstelle ist.
Genau das willst du ja in der neuen StringList in der Zeile i haben, also packst du das noch da hin.

Ach so: Bitte poste auch die Fehlermeldungen... Ich vermute mal, dass du mytxt nicht als String-Variable deklariert hast...
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:46 
Nur für dich, freak4fun, damit du genau den Fehler siehst, hab ich mal das Projekt geuppt und angehangen. Der Fehler wird in keinster Weis verziert, beschriftet o.ä....soweit ich das seh zumindest nicht x(
Einloggen, um Attachments anzusehen!
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: Do 13.09.07 00:48 
Unterhalb des Quelltextes sollte eigentlich eine Beschreibung des Fehlers kommen ;-). Aber ich sehs mir mal an...

// EDIT: Ich sehs schon... der dritte Befehl gehört nicht mehr zu if, das muss
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if Opendialog1.Execute then
begin
  mytxt := Opendialog1.Filename;
  Liste.Loadfromfile(mytxt);
end;
sein.
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 00:59 
der gemeinte Fehler besteht jedoch weiterhin =/
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 13.09.07 01:32 
Hast du irgendwo:
ausblenden Delphi-Quelltext
1:
2:
var
  mytxt: String;

stehen?

MfG
freak

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
Dark-§hadow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 24



BeitragVerfasst: Do 13.09.07 01:36 
Nochmals extra für dich =P

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
var
openDialog1 : TOpenDialog;
  Liste :TStringList;
  Liste2 :Tstringlist;
  Form1: TForm1;


procedure TForm1.Button1Click(Sender: TObject);
var i :integer;
mytxt : string;
begin
if Opendialog1.Execute then
begin
mytxt := Opendialog1.Filename;
Liste.Loadfromfile(mytxt);
end;
for i := 0 to Liste.Count - 1 do
  begin
    Liste.Strings[i];
liste2[i] := Copy(Liste[i], 1, Pos(';', Liste[i]) - 1);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
openDialog1 := TOpenDialog.Create(self);
end;


==> Jaaah, hab ich ^^

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 13.09.07 01:38 
Ich mach extra für dich mal meinen Rechner mit Delphi an. ;)

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
Michael Stenzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 133


D3 Prof, D7 PE
BeitragVerfasst: Do 13.09.07 01:44 
Hi.

Erzeugst Du den die Stringlisten mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
...
Liste := TStringList.Create;
Liste2 := TStringList.Create;
...


?
Wenn nicht , hast Du den Fehler Schon gefunden.
Vergesse nicht, die Listen wieder zu löschen mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
...
Liste.Free;
Liste2.Free;
...


Gruß
Michael
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Do 13.09.07 01:53 
Der Michael hat recht., wobei ich FreeAndNil(Liste); benutzen würde.

MfG
freak
Einloggen, um Attachments anzusehen!
_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen