-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
17. Apr 2010
Du hast die verlinkte Hilfe nicht wirklich gelesen, da steht alles drin.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
17. Apr 2010
Und Du bist ganz sicher, dass das Verzeichnis auch existiert?
Versuch mal das Programm im Anhang und gib Bescheid, ob es funktioniert.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Ach, so war das gemeint, keine schlechte Idee. Wenn man das dann noch mit der angesprochenen Klasse verbindet, die den TSearchRec entgegennimmt und die Felder den Anforderungen entsprechend parst, wäre das glatt die Luxus-Variante :zwinker:
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Ehrlich gesagt verstehe ich nicht ganz, wozu der Event dienen soll (außer das Programm zu verlangsamen, wenn eine Ereignisroutine hinterlegt ist :mrgreen:). Ich für meinen Teil würde dann doch eher aus dem Record eine Klasse machen und diese dann per AddObject in die Stringliste schieben. Oder hab ich Dich nicht richtig verstanden?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Seh ich genauso. Einfach mal einen Button nehmen, den Pfad exakt so übergeben, wie er in der DB steht und das Ganze mal in eine sichtbare Liste, sonst kommen wir nicht weiter.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Wer hat denn etwas gegen das and not? Mich persönlich hat nur gestört, dass alles 2 mal abgeklappert wird, was man auch mit einem Mal erledigen kann. Und angeblich funktioniert der Code ja mit einer Listbox, mit einer Stringliste aber nicht (was ich mir allerdings nicht so richtig vorstellen kann).
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Das hatte ich in #43 schon :mrgreen:
and not entfernt ein bestimmtes Bit, das ist schon richtig ;)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Solange die Unit mit der Klasse eingebunden ist, kann ja nix schiefgehen (sonst müsste der Compiler aber auch meckern).
Kann es sein, dass da ein "end;" zuviel ist? Ich hab die Datei in PSPad offen und kann da eins nicht so recht zuordnen. Versuch es mal mit diesen Änderungen (else-Zweige hab ich jetzt einmal weggelassen):procedure TfMDIChild.FormCreate(Sender: TObject);
var LastAccess :...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Das Array beginnt bei 0, die Liste auch. Übrigens bekommst Du ein Speicherleck, wenn die DB-Verbindung fehlschlägt, da die Liste dann nicht wieder freigegeben wird.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Wieso die Liste leer bleibt, hab ich nicht erkennen können, aber das SetLength ist so auf jeden Fall falsch. Wieso List.Count - 1 und nicht List.Count?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Das ist in der Tat bemerkenswert. Jetzt nimmst Du Dir mal die komplette Routine (ungekürzt), packst sie in eine Textdatei und hängst sie hier an, vielleicht sieht man dann, was da schiefgeht.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Wie ist es so?
var LastAccess : Array of string;
List : TStringList;
Path : string;
i : Integer;
begin
Path := '';
try
fMain.UniConnection1.Connect;
except
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Ich hab die Klassenmethode jetzt mal auf das Notwendigste gekürzt, auch wenn das vermutlich nicht fehlerverursachend war:class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string);
var SR : TSearchRec;
begin
if FindFirst(Directory+'*.*',faAnyFile,SR) = 0 then
begin
...
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Zeig doch einmal die ganze aufrufende Methode, nicht nur Häppchen davon.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Auch wenn das dann zum x-ten Mal hier steht, mein kompletter implementation-Abschnitt:
implementation
{$R *.dfm}
type
TDataWork = class
public
class procedure GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);static;
end;
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Ich verwende da ja auch nur eine Stringliste, lasse diese befüllen und gebe sie dann im Memo aus. Klappt also, das muss irgendetwas anderes sein.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Bist Du mal mit F7 durchgesteppt? Werden dabei Zeilen übersprungen?
Jetzt bin ich neugierig geworden und hab das selbst ausprobiert (ein Button und ein Memo auf der Form):
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringlist;
begin
List := TStringlist.Create;
try
TDataWork.GetAllFilesInDirectorys('C:\Test',List,true);
Memo1.Lines.Assign(List);
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Dann zeig doch nochmal den aktuellen Code (Methode und Aufruf komplett).
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Siehe #25 ;)
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Wozu das? Objektinstanzen werden im Normalfall nicht als var übergeben.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Dann ändere mal den "Hauptteil" der Methode.begin
List.BeginUpdate;
try
if ClearList then
begin
List.Clear;
end;
Directory := trim(Directory);
if Directory = '' then
begin
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Und wo wird "Pfad" gesetzt?
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Du musst die Liste auch erst einmal erzeugen (siehe Heikos Code).
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Wozu verlinke ich die Hilfe, wenn diese dann nicht gelesen wird? Und eine Zeitangabe enthält keine Punkte, egal, ob als FileTime oder TDateTime, da es sich um Zahlen handelt. Die Punkte kommen erst bei deren Darstellung ins Spiel, welche man ja z.B. mit FormatDateTime beeinflussen kann.
-
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Apr 2010
Das mit Zeile 34 war ironisch gemeint, da Du uns vorenthältst, wie Du die Routine aufrufst. Und an die Zeitangaben kommst Du auf jeden Fall über TSearchRec.FindData (was einem WIN32_FIND_DATA-Record entspricht), das wurde auch bereits gesagt. Sieh Dir doch einfach genau an, wie der Record TSearchRec aufgebaut ist.