AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FindFirst und Inhalt von txt Datei in Stringlist laden
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirst und Inhalt von txt Datei in Stringlist laden

Ein Thema von zaphood · begonnen am 27. Jan 2020 · letzter Beitrag vom 28. Jan 2020
Antwort Antwort
zaphood

Registriert seit: 19. Jan 2020
Ort: Hattingen
11 Beiträge
 
FreePascal / Lazarus
 
#1

FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 27. Jan 2020, 20:44
Hi,
ich habe hier zwei Programme die für sich alleine funktionieren. Jetzt sollen die verheiratet werden und die die vertragen sich nicht.

Hiermit suche ich nacheinander alle txt Dateinen, schreibe den Namen ins Memo und lösche danach.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
 var
     rec : tsearchrec;
     Datum : String;
 begin
    if FindFirst('f:\*.txt', faAnyFile, rec) = 0 then
    try
      repeat
         Datum := FormatDateTime('yyyy_mm_dd__hh_mm_ss', Now);
         Anzahl := Anzahl+1;
         Label2.Caption := IntToStr(Anzahl);
         Memo1.Lines.add(Datum+ ' '+ rec.Name);
         deletefile('f:\'+rec.Name);
      until FindNext(rec) <> 0;
    finally
      FindClose(rec);
    end;
 end;

Das ist Ziel den Inhalt der gefundenen txt Datei in eine Stingliste zu laden, was die Fehlermeldung Unable to open file"xxxx.txt" verursacht. Hat jemand eine Idee was sich beißt?
Delphi-Quellcode:
begin
  sl := TStringList.Create;
  if (FindFirst('f:\*.txt', faAnyFile, rec) = 0) then
    try
     sl.LoadFromFile(rec.Name);
Dirk
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#2

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 27. Jan 2020, 20:56
Las dir mal rec.Name ausgeben. Wenn ich mich nicht irre müsstest du dann sehen was das Problem ist.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 27. Jan 2020, 21:31
[QUOTE=zaphood;1456113]

Das ist Ziel den Inhalt der gefundenen txt Datei in eine Stingliste zu laden, was die Fehlermeldung Unable to open file"xxxx.txt" verursacht. Hat jemand eine Idee was sich beißt?

Hast Du die notwendigen Rechte? kann es sein das die Datei exklusiv geöffnet wurde?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#4

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 27. Jan 2020, 21:50
Mit sl.LoadFromFile('f:/' + rec.Name); sollt es klappen. Es fehlt der Pfad
  Mit Zitat antworten Zitat
zaphood

Registriert seit: 19. Jan 2020
Ort: Hattingen
11 Beiträge
 
FreePascal / Lazarus
 
#5

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 28. Jan 2020, 06:40
Guten Morgen und danke für die Tipps.

@Bernd: es klappt mit der Pfadangabe
@DieDolly: Mit ShowMessage(rec.Name); bekomme ich die Textdatei angezeit.

Mit sl.LoadFromFile('SPC.txt'); in einem anderen Programm lade ich eine txt Datei aus dem Programmverzeichnis. Wusste nicht das die Syntax für die Übergabe von FindFirst/tsearchrec an die Stringlist anders lauten muss.
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 28. Jan 2020, 07:29
Weil das Arbeitsverzeichnis bei dem anderen Programm zufällig stimmt. Benutze mal einen Öffnen-Dialog und öffne mal eine Datei aus einem anderen Ordner. Da wird dir das gleiche passieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#7

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 28. Jan 2020, 07:32
Zitat:
bekomme ich die Textdatei angezeit.
Genau genommen ist das falsch. Du bekommst einen Dateinamen ohne Pfad angezeigt. Und das ist der Fehler.

Wenn SPC.txt im selben Verzeichnis liegt wie deine Exe-Datei, dann funktioniert das.
Logischerweise, Windows kann ja nicht wissen wo die Datei ist (es könnte sie hunderte male geben mit demselben Namen), funktioniert das nicht mehr, wenn SPC.txt woanders liegt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 28. Jan 2020, 08:35
Hallo,
Zitat:
Wenn SPC.txt im selben Verzeichnis liegt wie deine Exe-Datei, dann funktioniert das.
Es sei denn, das aktuelle Verzeichnis (ChDir, SetCurrentDirectory) wurde geändert.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#9

AW: FindFirst und Inhalt von txt Datei in Stringlist laden

  Alt 28. Jan 2020, 10:26
Mit sl.LoadFromFile('SPC.txt'); in einem anderen Programm lade ich eine txt Datei aus dem Programmverzeichnis. Wusste nicht das die Syntax für die Übergabe von FindFirst/tsearchrec an die Stringlist anders lauten muss.
Das tut es auch nicht, denn an FindFirst übergibst du die Suchanfrage mit Pfad,
SearchReg.Name liefert immer nur den Dateinamen/Verzeichnissnamen ohne Pfad
und an das LoadFromFile übergibst DU es dann ohne Pfad.
PS: Beim DeleteFile hattest du es doch auch richtig gemacht.

Um Daniel und die anderen nochmal zusammenzufassen.
Ohne Pfad, bzw. mit relativem Pfad geht es immer vom aktuellen Arbeitsverzeichnis aus
und das muß nicht dem Programmverzeichnis entsprechen.

In der CMD tut es das oft, weil dort ja öfters die Programme im auch im aktuellen Verzeichnis gestartet werden.
Programm mit absolutem/relativem Pfad oder aus Suchpfaden starten und schon stimmt das auch doch nicht mehr.
Ebenso bei Links. Die bekommen beim erstellen oft standardmäßig den Pfad der gestarteten Datei (wenn man das Feld leer lässt), aber das muß nicht so sein.

Und als Tipp: Wenn man einen Öffnen-Dialog verwendet, dann stellt der gern das Arbeitsverzeichnis auf das ausgewählte Verzeichnis um.



Fazit, was auch überall immer wieder geprädigt wird: Man soll keine relativen Pfade verwenden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 00:57 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