Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Text einlesen und bearbeiten... (https://www.delphipraxis.net/87307-text-einlesen-und-bearbeiten.html)

Stern 26. Feb 2007 19:37


Text einlesen und bearbeiten...
 
Hallo liebes Forum,

vorweg, ich bin ein absoluter Neuling auf dem Gebiet Delphi komme mehr aus der "Netz-Ecke"...;-)

Ich will euch mal mein Problem schildern und hoffe, jemand von euch kann mir bei meinem, vielleicht auch etwas banalen Problem helfen.

Ich würde nämlich gerne eine .txt Datei ab einer bestimmten Zeile einlesen und dann den Text verändern. Nun würde ich die Datei gerne abspiechern und somit die alte Datei überschreiben.

Das ganze als Formular wär schon ganz schön. Naja, nach 2 Stunden suchen habe ich es gerade mal geschafft, die Datei komplett in eine StringList einzulesen. Mehr aber nicht... :cry:

Ich würd mich wahnsinnig freuen, wenn sich hier einer der kleinen verzweifelt suchenden Steffi annehmen würde :oops:

Liebe Grüße
Steff

Andidreas 26. Feb 2007 19:43

Re: Text einlesen und bearbeiten...
 
öhm also meines wissens nach, kannst du die datei die du geöffnet hast nicht überschreiben...

du müsstest dir temporär ein 2. txt file erstellen in das die daten schreiben, speichern, und danach wieder in die original datei umbennen...
also zumidest hab ich das immer so gemacht...

leider hab ich mein geschäfts notebook grad nicht da, sonst hätte ich dir gleich ein bsp. schicken könenn...
wenns langt hol ich das morgen nach?!

DGL-luke 26. Feb 2007 19:48

Re: Text einlesen und bearbeiten...
 
Hallo,

die Delphi-Onlinehilfe kann dir da sicher gut weiterhelfen: Einfach mal den Cursor wo hinstellen, wo Delphi-Referenz durchsuchenTStringList steht, und F1 drücken!

Da kommen dann so Sachen wie die "Items" Eigenschaft...

Aber um gleich ein Beispiel zu bringen:

Delphi-Quellcode:
Text := MyStringList[LineIndex];
Damit bekommst du (von 0 an gezählt) die LineIndex'ste Zeile des INhalts der Stringliste. und das kannst du dann manipulieren. Zurück gehts genau andersrum:

Delphi-Quellcode:
MyStringList[LineIndex] := Text;
@andidreas: Öhm... näää... wenn sie es in die stringliste einliest, ist die datei nicht dauernd geöffnet. also kein problem.

Andidreas 26. Feb 2007 19:52

Re: Text einlesen und bearbeiten...
 
@dgl-luke... mit stringlists hab ich nie in verbindung mit txt files gearbeitet ;) von daher wusst ich das nicht ^^

Hallo_Thomas 26. Feb 2007 19:56

Re: Text einlesen und bearbeiten...
 
Damit steuerst Du die Zeilen an;

Delphi-Quellcode:
StringList.Strings[index]
[dp]StrUtils und damit die Strings bearbeiten.

Delphi-Quellcode:
StringList..Delete(index);
und damit löschst Du Zeilen

Stern 26. Feb 2007 20:15

Re: Text einlesen und bearbeiten...
 
Meine Güte,

hier geht's aber rund... :shock: :shock: :shock:

Ich werde mich mal gleich ransetzen und noch ein bisschen was versuchen.
@Andidreas: Das wär superlieb, wenn du mir da ein Beispiel zukommen lassen könntest. Vielleicht denkste morgen ja dran ;-)
Email per pm...

@all: Also das war mehr ein Versuch mit der StringList, dass is mir halt bekannt vorgekommen :oops: ... Wäre es einfach, das ganze in ein editierbares Textfeld einzulesen? Hätte mir da jemand nen kurzen Ansatz, denn ich hab wirklich noch gar keinen Überblick mit den Formularen, etc...

Ganz liebe Grüße
Steffi

Stern 26. Feb 2007 20:28

Re: Text einlesen und bearbeiten...
 
Ok, ich hab mal hier schon was probiert. Damit bekomme ich die erste Zeile angezeigt. Wie kann ich diese und die folgenden 37 aber in ein Textfeld laden und diese verändern?

Mhm...

das hab ich bis jetzt mal hinbekommen:

Code:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList;
    zeilennr: integer;
begin
  sl:=TStringList.Create; //Objekt erzeugen

  try
    sl.LoadFromFile('c:\...\text.txt'); //Datei in Stringliste laden
    ShowMessage(sl.Strings[21]); //Meldung ausgeben

  finally
    sl.free; //Objekt wieder freigeben
  end;
end;

end.
Entschuldigt bitte, wenn ich zu ungeduldig bin, aber mich hat's gepackt :P :P :P

Liebe Grüße
Steffi

Klaus01 26. Feb 2007 20:32

Re: Text einlesen und bearbeiten...
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1  : TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList;
    zeilennr: integer;
    i:Byte;
begin
  sl:=TStringList.Create; //Objekt erzeugen

  try
    sl.LoadFromFile('c:\...\text.txt'); //Datei in Stringliste laden
    //ShowMessage(sl.Strings[21]); //Meldung ausgeben
    for i:=21 to 58 do
      Memo1.add(sl[i]);


  finally
    sl.free; //Objekt wieder freigeben
  end;
end;

end.
Sollte in etwa so gehen. Du brauchst dazu noch ein TMemo.

Grüße
Klaus

Stern 26. Feb 2007 20:56

Re: Text einlesen und bearbeiten...
 
Hallo Klaus,

vielen Dank für deine Antwort. Ich habe dein Beispiel mal versucht, bekomme aber die Fehlermeldung
"TMemo enthält kein Element 'add'".

Muss ich eventuell noch etwas importieren um TMemo nutzen zu können? Ich kann noch nicht weiter kompilieren...
oder muss ich vielleicht irgendwelche Einstellungen am Formular selbst vornehmen?

Ganz liebe Grüße
Steffi

uwewo 26. Feb 2007 21:01

Re: Text einlesen und bearbeiten...
 
Schau mal unter

Delphi-Quellcode:

Memo1.Lines.LoadFromFile(Dateiname);
Uwe

Stern 26. Feb 2007 21:04

Re: Text einlesen und bearbeiten...
 
Ok, ich habs.

Code:
Memo1.Lines.add(sl[i]);
So bekomme ich die Namen angezeigt...
Jetzt noch das ganze speichern... ;-)

Liebe Grüße
Steffi

Stern 26. Feb 2007 21:44

Re: Text einlesen und bearbeiten...
 
Letzte Frage für heute... :wink:

Hat schon mal jemand etwas mit gsPATH gemacht? Ich will ja mein geändertes Textfeld noch
speichern und mit dieser Funktion soll das anscheinend ganz gut gehen... Gibt es eventuell noch eine einfachere Methode?

Wenn noch jemand Lust hat... Ansonsten vilen lieben dank an alle, die ihr mir hier so toll geholfen habt.

Liebe Grüße
eure Steffi

Birzenbae 26. Feb 2007 21:49

Re: Text einlesen und bearbeiten...
 
Hi,

na wenns um simples speichern geht würd ich

Delphi-Quellcode:
memo1.lines.savetofile(Dateiname);
empfehlen.

MfG
Birzenbae

Stern 26. Feb 2007 21:59

Re: Text einlesen und bearbeiten...
 
Hi Birzenbae ,

und was mache ich, wenn ich diese Zeilen in der Originaldatei nur überschreiben will? Also die Zeilen, die ich nicht ausgelesen habe unverändert haben will?

Muss ich vielleicht eine Kopie der Datei erstellen und die "neuen Zeilen dann dort hin kopieren?

Liebe Grüße
Steffi

Birzenbae 26. Feb 2007 22:12

Re: Text einlesen und bearbeiten...
 
Hi,
also du könntest es so machen, dass du Alles in das Memo einfügen lässt und dann zB so die gewünschten Zeilen veränderst:

Delphi-Quellcode:
  for i:=21 to 58 do
  begin
    Editstr:=Memo1.Lines.Item[i];
    ...//Editstr bearbeiten
    Memo1.Lines.Item[i]:=Editstr;
  end;
und danach speicherst du nur noch die Datei, allerdings hab ich gerade kein Delphi installiert, kann somit also keine Garantie geben, ob der Zugriff so korrekt ist.

MfG
Birzenbae


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 Uhr.

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-2025 by Thomas Breitkreuz