Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateinamen speichern (https://www.delphipraxis.net/171483-dateinamen-speichern.html)

Smaraner 8. Nov 2012 13:13

Delphi-Version: 7

Dateinamen speichern
 
Hallo,

wie kann ich Dateinamen aus einem Ordner als String in eine Listbox speichern? (Das speichern in eine Listbox bekomme ich hin.

Bummi 8. Nov 2012 13:20

AW: Dateinamen speichern
 
Ich weiß nicht ob jemand die Frage verstanden hat ... ich habe es leider nicht.

Smaraner 8. Nov 2012 13:22

AW: Dateinamen speichern
 
Ich habe einen Ordner mit verschiedenen Textdateien. Wie kann ich jetzt die Dateinamen in eine Listbox speichern?

DeddyH 8. Nov 2012 13:24

AW: Dateinamen speichern
 
Entweder konventionell über FindFirst/FindNext/FindClose (dazu gibt es hier reichlich Beispiele), oder da es sich um eine Listbox handelt, mittels LB_DIR.

Nersgatt 8. Nov 2012 13:25

AW: Dateinamen speichern
 
Hier hast Du ein Beispiel, wie Du an die Dateinamen drankommst:
http://www.delphibasics.co.uk/RTL.asp?Name=FindFirst

Popov 8. Nov 2012 13:25

AW: Dateinamen speichern
 
Delphi-Quellcode:
//Liefert Datei-Liste ohne Unterordner
procedure GetFiles(Path, ExtMask: String; List: TStrings);
const
  Attrib = faArchive or faReadOnly or faHidden;
var
  SR: TSearchRec;
begin
  Path := IncludeTrailingBackslash(Path);

  if FindFirst(Path + '*.' + ExtMask, Attrib, SR) = 0 then
  repeat
    List.Add(Path + SR.Name);
  until FindNext(SR) <> 0;

  SysUtils.FindClose(SR);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFiles('c:\', 'txt', ListBox1.Items);
end;

DeddyH 8. Nov 2012 13:28

AW: Dateinamen speichern
 
Zitat:

Zitat von Popov (Beitrag 1190322)
Delphi-Quellcode:
IncludeTrailingBackslash(Path);

Sehr sinnig :mrgreen:

Nersgatt 8. Nov 2012 13:30

AW: Dateinamen speichern
 
Zitat:

Zitat von DeddyH (Beitrag 1190323)
Zitat:

Zitat von Popov (Beitrag 1190322)
Delphi-Quellcode:
IncludeTrailingBackslash(Path);

Sehr sinnig :mrgreen:

Optimiert der Compiler sowas eigentlich weg? Dann müsste er ja prüfen, ob die Function Nebeneffekte hat.

DeddyH 8. Nov 2012 13:32

AW: Dateinamen speichern
 
Keine Ahnung, ehrlich gesagt. Aber AFAIK gab es irgendwo eine Einstellung, dass Funktionsrückgaben generell ausgewertet/zugewiesen werden müssen, damit fiele das zumindest auf.

Popov 8. Nov 2012 13:32

AW: Dateinamen speichern
 
Haben wir ein Termin?

Union 8. Nov 2012 13:34

AW: Dateinamen speichern
 
Mit IncludeTrailingPathDelimiter wäre es dann auch zukunftssicher ;)

DeddyH 8. Nov 2012 13:35

AW: Dateinamen speichern
 
Aber auch dann nur, wenn man etwas mit der Rückgabe macht ;)

Nersgatt 8. Nov 2012 13:36

AW: Dateinamen speichern
 
Zitat:

Zitat von Popov (Beitrag 1190328)
Haben wir ein Termin?

Es geht nicht um die Geschwindigkeit, sondern darum, dass Du das Funktionsergebnis gar nicht zuweist. :stupid:

Popov 8. Nov 2012 13:37

AW: Dateinamen speichern
 
@DH: Ach her je, es gibt Leute, eigentlich überall auf der Welt, die quatschen dich eher 10 Stunden Tot als mit einem Wort zu sagen was sie meinen. Sorry Mann, bist ein kompetente Bursche, aber wenn du nichts zu sagen hast, dann las das in Zukunft. Diese Art nervt gewaltig.

Union 8. Nov 2012 13:37

AW: Dateinamen speichern
 
Zitat:

Zitat von DeddyH (Beitrag 1190330)
Aber auch dann nur, wenn man etwas mit der Rückgabe macht ;)

Dass dies bereits klar ist habe ich vorausgesetzt.

Smaraner 8. Nov 2012 13:38

AW: Dateinamen speichern
 
Hat funktioniert.:) Wie kann ich jetzt die makirte Datei in der Listbox aus dem Verzeichnis löschen?

Delphi-Quellcode:
DeleteFiles...

Popov 8. Nov 2012 13:40

AW: Dateinamen speichern
 
Zitat:

Zitat von Nersgatt (Beitrag 1190331)
Zitat:

Zitat von Popov (Beitrag 1190328)
Haben wir ein Termin?

Es geht nicht um die Geschwindigkeit, sondern darum, dass Du das Funktionsergebnis gar nicht zuweist. :stupid:

Liegt daran, dass ich früher eine eigene Prozedur hatte die das über den Parameter (var) löste. Die Macht der Gewohnheit

Nersgatt 8. Nov 2012 13:40

AW: Dateinamen speichern
 
Fast. DeleteFile(Dateiname)

DeddyH 8. Nov 2012 13:41

AW: Dateinamen speichern
 
@Popov: Wenn ich ungetesteten Code hier poste, dann weise ich auch darauf hin. Außerdem solltest Du als langjähriges Mitglied auch wissen, wo die F1-Taste ist, wenn man schon auf Fehler hinweist. Immer diese halbgaren Codes nerven nämlich auch auf Dauer.

Smaraner 8. Nov 2012 13:44

AW: Dateinamen speichern
 
@Nersgatt
hat funktioniert:-D

Popov 8. Nov 2012 13:50

AW: Dateinamen speichern
 
Weist du was wirklich nervt? Einfach ein Hinweis - die Funktion hat kein Rückgabewert - und es wäre innerhalb einer halben Minute erledigt. Stattdessen hat es ein Megaschwanz von Kommentaren ausgelöst. Das Problem ist, dass das nur Profilsucht ist. "ich weiß was was du nicht weißt", "ich bin schlauer als du weil ich etwas weiß", usw. Das ist Selbstbewusstsein aus Fehlern andere zu schöpfen. Ich hab in einer Firma mit 50 Psychologinnen gearbeitet, da lernt man viel. Wenn du willst kann ich ein Profil erstellen.

DeddyH 8. Nov 2012 13:59

AW: Dateinamen speichern
 
Auf diesem Niveau diskutiere ich mit Dir nicht weiter.

mkinzler 8. Nov 2012 14:08

AW: Dateinamen speichern
 
Zitat:

Zitat von Popov
@DH: Ach her je, es gibt Leute, eigentlich überall auf der Welt, die quatschen dich eher 10 Stunden Tot als mit einem Wort zu sagen was sie meinen. Sorry Mann, bist ein kompetente Bursche, aber wenn du nichts zu sagen hast, dann las das in Zukunft. Diese Art nervt gewaltig.

Und wenn jemand den falschen Code dann verwendet und sich wundert, dass er nicht richtung funktioniert?

Zitat:

Zitat von DeddyH
@Popov: Wenn ich ungetesteten Code hier poste, dann weise ich auch darauf hin. Außerdem solltest Du als langjähriges Mitglied auch wissen, wo die F1-Taste ist, wenn man schon auf Fehler hinweist. Immer diese halbgaren Codes nerven nämlich auch auf Dauer.

Es kann passieren, dass man nicht ganz korrekten Code postet. (Passt mir haüfig genug)

Zitat:

Zitat von Popov
Weist du was wirklich nervt? Einfach ein Hinweis - die Funktion hat kein Rückgabewert - und es wäre innerhalb einer halben Minute erledigt.

Die Funktion hat aber einen Rückgabewert und den hast du im ursprünglichen Code nicht ausgewertet.

Zitat:

Zitat von Popov
Stattdessen hat es ein Megaschwanz von Kommentaren ausgelöst. Das Problem ist, dass das nur Profilsucht ist. "ich weiß was was du nicht weißt", "ich bin schlauer als du weil ich etwas weiß", usw. Das ist Selbstbewusstsein aus Fehlern andere zu schöpfen. Ich hab in einer Firma mit 50 Psychologinnen gearbeitet, da lernt man viel. Wenn du willst kann ich ein Profil erstellen.

Das ist jetzt aber harter Tobak! Ein klein wenig "Profilierungsucht" spielt immer mit, warum sollte man sonst seine Zeit "vergeuden" anderen zu Helfen? Also Detlef ist der Letzte, dem ich unterstellen würde, hier sich nur zu engagieren um sein Ego auf Kosten anderer zu Polieren.

borstenei 9. Nov 2012 19:47

AW: Dateinamen speichern
 
Bitte vertragt euch doch wieder! Man kann viel lernen von euren Beiträgen .....

Sir Rufo 9. Nov 2012 20:01

AW: Dateinamen speichern
 
Theoretisch und praktisch könnte man die Zeile mit dem
Delphi-Quellcode:
IncludeTrailingPathDelimiter
bzw.
Delphi-Quellcode:
IncludeTrailingBackslash
auch ganz rausnehmen, denn der Übergabeparameter heißt
Delphi-Quellcode:
Path
= Pfad.

Und ein Pfad ist ganz eindeutig definiert mit einem Pfadtrennzeichen am Ende, denn ansonsten ist es kein Pfad, sondern ein Verzeichnis oder sogar eine Datei.

Das mit dem
Delphi-Quellcode:
IncludeTrailing...
ist also nur ein Notnagel, falls der Programmierer den Funktionsaufruf nicht durchliest und - im Grunde genommen - einen falschen Wert übergibt.

Wenn ich eine Funktion baue
Delphi-Quellcode:
procedure Foo( const Vorname, Nachname : string ) : string;
dann sollte ich ja auch nicht Vor- und Nachname vertauschen, auch wenn das funktioniert, weil es beides ein String ist ;)

Somit ist der Ursprungscode von Popov weder falsch noch funktioniert er nicht richtig, sondern hat keinen DAU-Filter drinnen :mrgreen:

Perlsau 10. Nov 2012 06:24

AW: Dateinamen speichern
 
Zitat:

Zitat von Smaraner (Beitrag 1190316)
Hallo, wie kann ich Dateinamen aus einem Ordner als String in eine Listbox speichern? (Das speichern in eine Listbox bekomme ich hin.

Steht u.a. im Codeorakel.


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