Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mit delphi eine text datei auslesen (https://www.delphipraxis.net/158971-mit-delphi-eine-text-datei-auslesen.html)

fox67 9. Mär 2011 20:22

Mit delphi eine text datei auslesen
 
hallo ich versuch gerade ein programmzu machen dass eine text datei von einem ftp server holt und dann soll delphi ermitteln wie viele zeilen die datei hat und jeder zeile eine nummer geben. Anschließend kann man in ein edit feld ein Zahl eingeben und wenn man dann auf einen button klickt wird die zeile mit der eingegebenen Zahl gelöscht. zum schluß wird die datei auf dem ftp server gelöscht und die bearbeitete wird hochgeladen. Die sachen mit dem ftp server kann ich(also dass uploaden, downloaden und ersetzen). Aber beim rest weiß ich nicht weiter.

daywalker9 9. Mär 2011 20:30

AW: Mit delphi eine text datei auslesen
 
Schau dir mal Delphi-Referenz durchsuchenTStringList an.

fox67 9. Mär 2011 20:36

AW: Mit delphi eine text datei auslesen
 
ok wie sieht das dann aus wie öffne ich die text datei? wie kann ich jede einzelne zeile in die list einfügen

alfold 9. Mär 2011 20:40

AW: Mit delphi eine text datei auslesen
 
TStringlist alleine dürfte da wohl nicht ausreichen. Er benötigt ja auch noch eine Anzeige wo der Text zu sehen ist, möglichts mit Zeilennr.

zB noch ein Memo oder Richedit und kann somit die Daten gleich bearbeiten und wieder Speichern!

€: z.B.
Delphi-Quellcode:
Memo1.Lines.Loadfromfile('Deine Datei');

Gruss alfold

-Phantom- 9. Mär 2011 20:41

AW: Mit delphi eine text datei auslesen
 
Also in die Stringlist lädst du so :

Delphi-Quellcode:
var
Liste : TStringlist;
begin
Liste := tstringlist.Create;
Liste.LoadFromFile(*pfad*);
// so kannst du einfach Löschen "liste.Delete(Strtoint(edit1.text);"
// aber die Stringlist kannst du nicht sehen, deswegen wie alfold sagte mittels Memo oder Richedit, dort gibt es auch "loadfromfile" und so Löscht du dann : "smemo1.Lines.Delete(strtoint(edit1.text));"

fox67 9. Mär 2011 20:48

AW: Mit delphi eine text datei auslesen
 
ich kapier nicht so kanz wie die for schleife dann aussehen soll und wie sie dann funktioniert. außerdem wie speichere ich dann die text datei. damit keine probleme auftauchen wenn man dass programm des nächste mal ausführt muß man die text datei löschen doch wie macht man so etwas?(sorry aber ich habe noch nie mit textdatein in delphi gearbeitet:-D)

-Phantom- 9. Mär 2011 20:50

AW: Mit delphi eine text datei auslesen
 
keine FOR-Schleife...

Delphi-Quellcode:
smemo1.Lines.LoadFromFile(*pfad*); // laden
smemo1.Lines.Delete(strtoint(edit1.text)); // löschen
smemo1.lines.savetofile(*pfad*); // speichern

// Zum Löschen einer Datei benutze ich immer diese Funktion :
Zitat:

uses StdCtrls,ExtCtrls,ComCtrl ( bin mir nicht sicher welche, füge einfach alle ein )

function DeleteFile(const AFile: string): Boolean;
var
sh: SHFileOpStruct;
begin
ZeroMemory(@sh, sizeof(sh));
with sh do
begin
Wnd := Application.Handle;
wFunc := fo_Delete;
pFrom := PChar(AFile + #0);
fFlags := fof_Silent or fof_NoConfirmation;
end;
result := SHFileOperation(sh) = 0;
end;

procedure button.click();
begin
DeleteFile(*pfad*);
end;

fox67 9. Mär 2011 20:54

AW: Mit delphi eine text datei auslesen
 
danke :-D

alfold 9. Mär 2011 20:56

AW: Mit delphi eine text datei auslesen
 
Halt Phantom Die Datei befindet sich auf einen FTpServer!

Gruss alfold

-Phantom- 9. Mär 2011 20:58

AW: Mit delphi eine text datei auslesen
 
Nein?! Er läd sie ja runter?!
Zitat:

hallo ich versuch gerade ein programmzu machen dass eine text datei von einem ftp server holt und dann soll delphi ermitteln wie viele zeilen die datei hat und jeder zeile eine nummer geben. Anschließend kann man in ein edit feld ein Zahl eingeben und wenn man dann auf einen button klickt wird die zeile mit der eingegebenen Zahl gelöscht. zum schluß wird die datei auf dem ftp server gelöscht und die bearbeitete wird hochgeladen. Die sachen mit dem ftp server kann ich(also dass uploaden, downloaden und ersetzen). Aber beim rest weiß ich nicht weiter.

alfold 9. Mär 2011 21:01

AW: Mit delphi eine text datei auslesen
 
Ja und, bearbeiten tut er sie auf seinen Rechner, Löschen oder überschreiben kann er sie nur auf dem FTPServer, hat also nix mit Delete File aus Windows gemein!

Gruss alfold

-Phantom- 9. Mär 2011 21:05

AW: Mit delphi eine text datei auslesen
 
Ich habs so verstanden das er die .txt auf sein Rechner löschen will. Weil er ja sagt das er
Zitat:

Die sachen mit dem ftp server kann ich(also dass uploaden, downloaden und ersetzen).
das kann. Er kann auf dem ftp server ersetzten so wie er sagt. Deshalb dachte ich mir das er die Datei die auf sein rechner ist löschen will

alfold 9. Mär 2011 21:12

AW: Mit delphi eine text datei auslesen
 
is ja auch richtig :wink:
Löschen muss er die Datei ja dann auch auf seinem Rechner, - irgendwann:-D
Es sei, er macht Move zum FTP 8-)
Gruss alfold

fox67 9. Mär 2011 21:51

AW: Mit delphi eine text datei auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
unit artikelloeschen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, IdComponent, IdTCPConnection, IdTCPClient,
  IdFTP, IdBaseComponent, IdIntercept, IdLogBase, IdLogDebug, ExtCtrls;

type
  TForm1 = class(TForm)
    IdLogDebug1: TIdLogDebug;
    IdFTP1: TIdFTP;
    DebugListBox: TListBox;
    StatusBar1: TStatusBar;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure onStatus(axSender: TObject; const axStatus: TIdStatus;
      const asStatusText: String);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure OnLogItem(ASender: TComponent; var AText: String);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
    procedure getfile();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.onStatus(axSender: TObject; const axStatus: TIdStatus;
  const asStatusText: String);
begin
DebugListBox.ItemIndex := DebugListBox.Items.Add(asStatusText);
StatusBar1.Panels[0].Text := asStatusText;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.Connect;
timer2.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if IdFTP1.Connected = true then
 begin
 button1.Visible:=false;
 button2.Visible:=true;
 edit1.Visible:=true;
 button3.Visible:=true;
 end;
if IdFTP1.Connected = false then
 begin
 button1.Visible:=true;
 button2.Visible:=false;
 button3.Visible:=false;
 button4.Visible:=false;
 Label1.Visible:=false;
 edit1.Visible:=false;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdFTP1.Disconnect;
end;

procedure TForm1.OnLogItem(ASender: TComponent; var AText: String);
begin
DebugListBox.ItemIndex := DebugListBox.Items.Add(AText);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if IdFTP1.Connected then
begin
getfile();
timer2.Enabled:=false;
end;
end;

procedure TForm1.getfile();
begin
IdFTP1.Get('anzeigen.txt', extractfilepath(application.ExeName), true);
end;
end.
ich wollte mein programm mal bishierhin testen griege aber folgende fehlermeldung

Sir Rufo 9. Mär 2011 22:08

AW: Mit delphi eine text datei auslesen
 
Irgendwie ja auch logisch.

Du müsstest einen Dateinamen übergeben, stattdessen gibt's du einen Pfad.

alfold 9. Mär 2011 22:09

AW: Mit delphi eine text datei auslesen
 
Ich glaube da fehlt irgenwie der Dateiname

Delphi-Quellcode:
IdFTP1.Get('anzeigen.txt', extractfilepath(application.ExeName)+'meinedatei.txt', true);

mist wieder zu langsam :stupid:

Mal ne andere Frage:
Warum startest Du da noch einen 2.Timer?
Du solltest auch mindestens ne exeption abfangen wenn es zu keinem Connect kommt bzw ne meldung generieren!

den Timer als solche sbrauchst Du doch gar nicht1
Delphi-Quellcode:
try
  IdFTP1.Connect(true,5000);//5 sek warten auf verbindung
  if IdFTP1.Connected then
  begin
   .....//mache hier was du willst
   .....
  end;
except
    raise; // Exception warum die Verbing fehlschlug ausgeben
end;
//alles in ordnung

gruss alfold

fox67 9. Mär 2011 22:14

AW: Mit delphi eine text datei auslesen
 
ja das war der fehler danke.:-D

fox67 10. Mär 2011 11:22

AW: Mit delphi eine text datei auslesen
 
Zitat:

Mal ne andere Frage:
Warum startest Du da noch einen 2.Timer?
Du solltest auch mindestens ne exeption abfangen wenn es zu keinem Connect kommt bzw ne meldung generieren!

den Timer als solche sbrauchst Du doch gar nicht1
doch den brauche ich. Der erste timer schaute ob die verbindung steht oder nicht und dementsprechend die buttons sichbar und unsichtbar mach.
der zweite timer geht an wenn man auf den verbinden button klickt und wartet dann bisman mit dem server verbunden ist dann holt er die textdatei vom server und schält sich aus. würde dass der erste timer machen(der muß anbleiben da er ja überprüft ob die verbindung an oder aus ist) würde die text datei die ganze zeit erneut vom server geladen werden was dann auf die dauer bestimmt zu errors kommen würde(außerdem könnte man die datei nich mehr bearbeiten).
Zitat:

Ich habs so verstanden das er die .txt auf sein Rechner löschen will. Weil er ja sagt das er
Zitat: Die sachen mit dem ftp server kann ich(also dass uploaden, downloaden und ersetzen).das kann. Er kann auf dem ftp server ersetzten so wie er sagt. Deshalb dachte ich mir das er die Datei die auf sein rechner ist löschen will

Das hast du richtig verstanden den ursprünglich wollte ich die datei auf dem rechner löschen nur dann habe ich gemerkt dass man beim downloaden die datei gleich überschreiben kann.

himitsu 10. Mär 2011 11:38

AW: Mit delphi eine text datei auslesen
 
Zitat:

Zitat von fox67 (Beitrag 1087254)
doch den brauche ich.

Timer1:
Und jetzt rate mal, warum diese Komponente bestimmt irgendwelche Ereignisse ala OnConnect/OnDisconnect bereitstellt?

Timer2:
Nach dem .Connect ist man verbunden und wenn nicht, dann kommt es auch nicht später nach.
Und selbst wenn diese Komponente assynchron arbeiten würde, dann gäbe es ein entsprechendes Ereignis.


Ereignisse sind dafür da, damit die Komoponente uns sagt, was mit ihr los ist
und nicht damit wir ständig sinnlos anfragen müssen was mit ihr los ist.

fox67 10. Mär 2011 11:41

AW: Mit delphi eine text datei auslesen
 
Zitat:

Und jetzt rate mal, warum diese Komponente bestimmt irgendwelche Ereignisse ala OnConnect/OnDisconnect bereitstellt?
warum einfach machen wenn es auch komlieziert geht?:-D:-D

nein spass das ist mir kar nicht auf gefallen dass die zwei ereignisse gibt.

alfold 10. Mär 2011 11:48

AW: Mit delphi eine text datei auslesen
 
Sinn macht Dein Timer2 nur, wenn du auch ne Anzeige dafür machst wie lange es dauert bis die Verbindung steht!
Und Dein Timer1 kannst du weglassen wenn Du alles in

Delphi-Quellcode:
if IdFTP1.Connected then
  begin
   .....//mache hier was du willst
   .....
  end;
reinschreibst :wink:

Gruss alfold

fox67 11. Mär 2011 11:46

AW: Mit delphi eine text datei auslesen
 
nun habe ich ein weiteres problem. Die Text datei nütze ich für ein php scribt LINK. Pro zeile eine Anzeige. die zeilen sind so aufgebaut bilname|tite|inhalt. Das programm das ich geschrieben habe ist da um die anzeigen zu verwalten also löschen und hinzufügen. Wenn delphi jetzt eine zeile löscht soll es auch dass dazugehörige bild löschen es seiden es ist keinbild.jpg. hat wer eine ahnung wie ich dass anstellen könnte.:-D

p80286 11. Mär 2011 12:03

AW: Mit delphi eine text datei auslesen
 
Delphi-Quellcode:
PictToDelete:=x;
...
DeleteFile(List[PicToDelete].BilName);
List.delete(PicToDelete);
...
So ungefähr

Gruß
K-H

fox67 11. Mär 2011 12:24

AW: Mit delphi eine text datei auslesen
 
das beantwortet irgentwie nicht meine frage das bild ist auf dem ftp server.

p80286 11. Mär 2011 12:53

AW: Mit delphi eine text datei auslesen
 
Zitat:


Ftp: deleteLöscht Dateien auf dem Remotecomputer.

Syntax
delete Remotedatei

Parameter
Remotedatei
Gibt die zu löschende Datei an.
? delete
Zeigt die Hilfe für den Befehl delete an.
Dann ist dies wahrscheinlich auch nicht so hilfreich?

Gruß
K-H

fox67 11. Mär 2011 12:56

AW: Mit delphi eine text datei auslesen
 
das löschen ist nicht das problem den DATEINAMEN AUS DER TEXTDATEI zufinden ist das problem

alfold 11. Mär 2011 13:06

AW: Mit delphi eine text datei auslesen
 
Wie sieht den die Text Datei aus!
Gruss alfold

fox67 11. Mär 2011 13:08

AW: Mit delphi eine text datei auslesen
 
die zeilen der textdatei sehen so aus : "bildname|titel|inhalt"

mkinzler 11. Mär 2011 13:09

AW: Mit delphi eine text datei auslesen
 
Einmal sollte aber reichen
http://www.delphipraxis.net/159033-s...-new-post.html

fox67 11. Mär 2011 13:12

AW: Mit delphi eine text datei auslesen
 
ich habe nur deshalb einen neuen beitrag eröffnet da hier keiner so wirklich geblickt hatt was ich meine

alfold 11. Mär 2011 13:13

AW: Mit delphi eine text datei auslesen
 
Der senkrecht strich dient als trenner? Und Bildname beinhalted hoffentlich den gesamten Pfad.

Dann mach es mit posex so als Vorschlag

Delphi-Quellcode:
i:= posex('|', tempstrg);
bildstrg:= leftstr(tempstrg,i-1);
Gruss alfold

p80286 11. Mär 2011 13:16

AW: Mit delphi eine text datei auslesen
 
Zitat:

Zitat von fox67 (Beitrag 1087126)
Die sachen mit dem ftp server kann ich(also dass uploaden, downloaden und ersetzen). Aber beim rest weiß ich nicht weiter.

Zitat:

Zitat von fox67 (Beitrag 1087685)
die zeilen der textdatei sehen so aus : "bildname|titel|inhalt"

Wo ist denn da das Problem?
Du weißt doch wo der Dateiname steht ?

Gruß
K-H

Edith:
Zitat:

Zitat von fox67 (Beitrag 1087689)
ich habe nur deshalb einen neuen beitrag eröffnet da hier keiner so wirklich geblickt hatt was ich meine

Das wiederum wundert mich nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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