AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aktuelle Datei finden

Ein Thema von Willie1 · begonnen am 9. Dez 2024 · letzter Beitrag vom 14. Dez 2024
Antwort Antwort
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: Aktuelle Datei finden

  Alt 11. Dez 2024, 18:40
Zitat von himitsu:
if TryStrToInt(RightStr(ChangeFileExt(Filename, ''), 2), i) and (i > Year) then
Dann muss aber der Compiler auf Kurzschluss gestellt sein. Was enthält i, wenn Try fehlschlägt? Was aber eigentlich nicht passieren kann wg. der Suchmaske.

Dann noch etwas Grundsätzliches: Ich könnte natürlich eine Recent-Liste anlegen. Aber die zeigt stur immer die zuletzt aufgerufenen Dateien an, während meine Lösung die aktuellen Files zur Auswahl anbietet! Oder Beides?

Himitsu, ich habe mal nach deinem Nicknamen gegooglet, interessant. Du hast die besten Tricks drauf. So werde ich es machen.

Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Aktuelle Datei finden

  Alt 11. Dez 2024, 19:18
Wenn möglich, versuch ich schon das vom Delphi selbst zu nutzen.
Ist nicht immer das Idealste, aber z.B. die IOUtils sind einfacher und dadurch fehlerunanfälliger und erzeugen auch so "übersichtlicheren" Code, gegenüber den alten Pascal-Prozeduren oder der WinAPI, vor allem wenn es auch noch rekursiv oder iterativ wird.

Dann muss aber der Compiler auf Kurzschluss gestellt sein.
Was aber auch der Standard ist und IMHO besser auch sein sollte.

Wobei es hier jetzt auch nicht schlimm wäre, jedenfalls im Endergebnis. (und bei dem zweiten Vergleich würde es nicht stören, wenn i auf einem Zufallswert läge)

PS: PostgreSQL hatte mal die volle Auswertung im PLSQL, aber sie haben eingesehn, dass es voll beschissen ist.

Es ist auch meistens einer der Fälle, wo ich dieses Compilersetting nicht explizit vorgebe und auch nicht drauf prüfe, falls es wer umstellt ... isser halt selbst Schuld (andere Settings prüfe ich entweder oder gebe sie für meine Funktion/Unit vor)



Man muß nichtmal das Result-Array der Funktion benutzen. (einfach immer blind False zurückgeben, damit das Array nicht sinnlos gefüllt wird)
In der Methode kannst du das Gewünschte ja so benutzen und dort auch extern speichern, wie und wo auch immer du willst. (oder Beides gemeinsam nutzen)

Für ein Projekt hatte ich zuletzt GetFiles nur benutzt um "alle" Dateien zu suchen
und dann nachher auf dieses Array gefiltert, für unterschiedliche Dateien und Vorgänge,
also einmal suchen und dann "schnell" das Array (als Cache), anstatt für Jeden einzeln.

So könnte man auch das noch gemütlich z.B. mit einer RecentListe kombinieren.




In diesem Fall war es einfacher die Vergleichmethode sich zu sparen.
Das RESULT vorher in eine Variable und man kann beim Anzeigen einen Fortschritt anzeigen (exklusive der Zeit für die Suche selbst).

Direkt in der Vergleichsmethode arbeiten, könnte man beim Suchen die Position (Pfad) als Fortschritt anzeigen (weiß aber natürlich die Anzahl nicht).

Doppelt suchen hatte ich früher mal gemacht, aber es ist immer langsamer.
Na gut, beim Suchen den Suchfortschritt (wenn man viele Dateien/Verzeichnisse sucht)
und am Ende dann nochmal über das Array und dort kann man dann den Gesamtfortschritt + Restzeit ausgeben, wenn die Verarbeitung "langsamer" ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Aktuelle Datei finden

  Alt 12. Dez 2024, 16:33
Zitat:
Was aber auch der Standard ist und IMHO besser auch sein sollte.
Stimmt. Ich hab' vor Jahren mal einen Programmierkurs für Pascal besucht. Der Dozent hatte den Spruch drauf "man solle sich nicht auf den Zufall verlassen, das könne schief gehen". Irgendwann in ferner Zukunft hat i den Wert z.B. 55 und dann würde die Funktion crashen. Aber durch die Suchmaske *[0-9][0-9].fus kann das eigentlich nicht passieren.


Ich werde versuchen, Recentliste und die aktuellsten Files in eine Liste zusammen zu bringen. Also an die Arbeit!
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Aktuelle Datei finden

  Alt 12. Dez 2024, 17:01
In aktuellen Delphis kann man ja nun wunderschön mit Arrays rechnen ... so als wären es Strings. (drum wurden diese Features damals auch mit "new string-like array operations" extrem enthusiastisch vorgestellt)

Delphi-Quellcode:
var Files :=
    TDirectory.GetFiles(Dir, '*.fus')
  + TDirectory.GetFiles(Dir, '*.blubb')
  + TDirectory.GetFiles(Dir, '*.holladiewaldfee');
TArray.Sort<string>(Files);
ShowMessage(string.Join(sLineBreak, Files));
Delphi-Quellcode:
var arr: TArray<string>; // oder TStringDynArray oder array of string oder ...

arr := ['abc', '123', 'xyz'];

s := 'def';
arr := arr + [s];

arr := arr + arr;

TArray.Sort<string>(arr);
if TArray.BinarySearch<string>(arr, 'xyz', i) then
  ShowMessage(i.ToString);

if TArray.Contains<string>(arr, 'abc') then

var i := TArray.IndexOf<string>(arr, 'def');
Sowie Insert und Delete können endlich auch für Arrays benutzt werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Dez 2024 um 17:08 Uhr)
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
691 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Aktuelle Datei finden

  Alt 13. Dez 2024, 19:06
Muss ich ausprobieren! Die Suche nach der richtigen Datei muss schnell gehn. Wi.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Aktuelle Datei finden

  Alt 14. Dez 2024, 08:32
So generell kann man sagen solche Array-Operatione sind nicht die schnellsten.
Im Vergleich zu den Operationen auf dem Dateisystem sind diese vernachlässigbar. Dann lieber ein Code der gut zu lesen und verständlich ist.
  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 23:53 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