Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   .txt lesen/schreiben (https://www.delphipraxis.net/110113-txt-lesen-schreiben.html)

Zipp 13. Mär 2008 09:48

Re: .txt lesen/schreiben
 
Delphi-Quellcode:
begin
  Datei := TStringList.Create;
  Datei.LoadFromFile(Pfad);
  for i:=0 to Neu.Count-1 do
    Datei.Add(Neu.Strings[i]);
  Datei.SaveToFile(Pfad);
end;
So müsste es eigentlich gehen. Bei Pfad musst man den kompletten Pfad angeben. Neu ist eine StringList mit den anzuhängenden Dateien. Wichtig ist, dass die Datei existiert und "Neu" mindestens eine Zeile besitzt, da es sonst zu einem Fehler kommt. Beides kann man durch if-Abfragen prüfen.
Den Code habe ich jetzt nicht ausprobiert. Kann also sein, dass da noch ein kleiner Fehler drin ist.

shader 13. Mär 2008 09:52

Re: .txt lesen/schreiben
 
@Zipp
DAnke für den Code, aber das Eintragen neuer Zeichen hab ich schon.
Probleme hab ich jetzt nur noch beim Löschen und Lesen.

Tyrael Y. 13. Mär 2008 09:57

Re: .txt lesen/schreiben
 
Zitat:

Zitat von shader
Zitat:

Am Besten du öffnest mal die Hilfe und suchst nach TStringList und liest mal die
Beschreibung zu allen Methoden und Eigenschaften, dann wird es dir wahrscheinlich wie
Schuppen von den Augen fallen, wie du das realsieren kannst.
Hab ich ja gemacht, bin ja auch Fündig geworden. Nur bei Delete kommt ein Zugriffsfehler.
Genauso wie wennsch mit IndexOf arbeiten will.

Delete erwartet als Parameter eine Zahl,
diese Zahl gibt an an welcher Position etwas gelöscht werden soll.
Eine Stringliste fängt mit der Position 0 an.

Falls du in einer Schleife mehrere Einträge nacheinander löschen möchtest, musst du bedenken, dass nachfolgende Einträge ja nach vorne rutschen und so du auf nicht mehr existente Einträge zugreifen möchtest.

Die Lösung hierbei ist die Schleife von der letzten Position der List zu beginen.

Delphi-Quellcode:
for i := MeineListe.Count-1 downto 0 do
begin
  MeinListe.Delete(i);
end;

IndexOf erwartete einen String und gint dir im Rückgabeergebnis zurück, an welcher Position in der Liste dieser string gefunden wurde.
Wird der gesuchte String nicht gefunden, gibt es -1 zurück.

shader 13. Mär 2008 10:04

Re: .txt lesen/schreiben
 
Hier ist mal mein Code für das löschen;
Delphi-Quellcode:
procedure TForm1.btn_loesClick(Sender: TObject);
begin
  datei.Delete[1];
end;
Das ist die Meldung, die ich bekomme;
Zitat:

[Fehler] Unit1.pas(61): Nicht genügend wirkliche Parameter
Und hier mal für das Lesen;
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create;
  lbl_nachr.Caption := nachricht;
  lesen.Free;
end;
Und das ist die Fehlermeldung;
Zitat:

Listenindex überschreitet das Maximum(0)

Nuclear-Ping 13. Mär 2008 10:07

Re: .txt lesen/schreiben
 
Zitat:

Zitat von Tyrael Y.
IndexOf erwartete einen String und gint dir im Rückgabeergebnis zurück, an welcher Position in der Liste dieser string gefunden wurde.
Wird der gesuchte String nicht gefunden, gibt es -1 zurück.

... und folglich erhältst du auch eine Zugriffsverletzung, wenn du das vorher nicht überprüfst und auf StringList[-1] zugreifen willst.

shader 13. Mär 2008 10:09

Re: .txt lesen/schreiben
 
:wiejetzt: versteh ich grad net!?

Nuclear-Ping 13. Mär 2008 10:15

Re: .txt lesen/schreiben
 
Naja, das kommt davon, wenn man das Ziel will, ohne den Weg zu gehen. ;)

Soll heissen: Wie willst du auch etwas verstehen, wenn es dir scheinbar komplett an einem Grundlagenverständnis mangelt? Und nur weil ich das sage, will ich dir auch nichts böses. Sondern hol dir ein Buch oder studiere ein Tutorial was den Einstieg in Delphi von Grundauf erklärt. Wie die Syntax ist, wie man mit Klassen umgeht, Funktionen aufruft, etc. pp.

Das meinte ich auch vorn: Warum soll man jedesmal und jedesmal und jedesmal wieder von vorn den Urschleim unselbständigen Leuten erklären, die es einfacher finden, ihre Delphikenntnisse so wie du anzueignen, statt es wirklich zu STUDIEREN.

xZise 13. Mär 2008 10:22

Re: .txt lesen/schreiben
 
Zitat:

Zitat von shader
Hier ist mal mein Code für das löschen;
Delphi-Quellcode:
procedure TForm1.btn_loesClick(Sender: TObject);
begin
  datei.Delete[1];
end;

".Delete" ist eine Prozedur!

Zitat:

Zitat von shader
Und hier mal für das Lesen;
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create;
  lbl_nachr.Caption := nachricht;
  lesen.Free;
end;

In "nachricht" steht nicht der Text der StringListe!

MfG
xZise

shader 13. Mär 2008 10:30

Re: .txt lesen/schreiben
 
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create;
  lbl_nachr.Caption := nachricht;
  lesen.Free;
end;
Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create;
  lbl_nachr.Caption := lesen[0];
  lesen.Free;
end;
Funktioniert aber Trotzdem nicht.


Zitat:

Löschen einer Zeile ( var SList: TStingList; // Creat und Free nicht vergessen )
SList.Delete(0); //löscht die erste Zeile
So hab ich es auf einer Seite gefunden.

Funktioniert aber trotzdem alles nicht.


@Nuklear Ping
Was bringt mir ein Tutorial, hab den Code jetzt einfach mal fast 1:1 abkopiert und trotzdem
Funktioniert es nicht. Da bringt auch ein Tut nichts.
Kann mir wenigstens einer mal die Fehler erklären.

Klaus01 13. Mär 2008 10:38

Re: .txt lesen/schreiben
 
Guten Morgen,

Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create; //hier erstellst Du eine StringList Instance
  // es wird aber nichts in die Liste eingelesen
  lbl_nachr.Caption := lesen[0]; // hier versuchst Du aus der List zu lesen
  lesen.Free;
end;

logischer wäre es so:

Delphi-Quellcode:
procedure TForm1.btn_lesenClick(Sender: TObject);
var lesen: TStringList;
begin
  lesen := TStringList.Create;
  lesen.loadFromFile(....);
  if lesen.count > 0 then
    lbl_nachr.Caption := lesen[0];
  lesen.Free;
end;
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz