Autor Beitrag
tha_blaze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 10:15 
morgen leute :wink:

ich hab ein problem mit meiner timer routine. ich soll ein prog machen was dateien asu einem ordner liest (das hab ich schon geschafft) jetzt soll das mithilfe eines timer erfolgen denn alle 5 sek. soll er die dateien auslesen aber irgendwie klappt das nich...

hier is mal ein wenig source:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
var
  Form1: TForm1;
  FFileMan: TButton;
  LBFiles: TListBox;
  SR: TSearchRec;
  zaehler:Integer;
  ls: TStringList;
  ini: TINIFile;
  i: integer;
  txt: TStrings;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;
procedure ListFileDir(Path: string; FileList: TStrings);
begin
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 timer1.Enabled:=true;
 zaehler:=1;
 ini := TIniFile.Create('deine.ini');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if zaehler=5 then
  begin
   close;
  end
  else
  begin
    zaehler:= zaehler+1;
   // Showmessage('bin da'); exit;
    ListFileDir('c:\medlinq\easy\*.*', LBFiles.Items);
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ini.Free;
end;



end.

die showmessage sollte mir bloß zeigen ob er überhaupt den block abarbeitet...
bis zur showmessage kommt er auch aber er liest die dateien nich aus.
am ende sollen die dateien noch in einer .ini abgespeichert werden die dann wieder gelöscht werden soll wenn der timer wieder anspringt

thx

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 10:18 
Das kann daran liegen, dass deine Prozedur ListFileDir keinen Source hat. :mrgreen:
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 10:30 
hi jasocul...

meinst du das mit copy und paste...
ich weiss aber nich was da rein soll und das lief ja schonma das prog auch ohne copy und paste...

danke das du dich wieder meiner problemem annimmst :D

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 10:36 
Mit dem Copy&Paste-Fehler hat das nichts zu tun.
Du rufst in deinem Timer die Prozedur ListFileDir auf.
Die Prozedur existiert auch, aber da steht nicht drin, was die Prozedur denn eigentlich machen soll.
Der Inhalt scheint dir bei deinem Datenverlust, von dem du mir erzählt hast, verloren gegangen zu sein. Den Ablauf musst du neu programmieren.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 10:49 
na das is klasse das zwischen dem datenverlust und dem tag an dem ich weitermachen wollte die trennung von meiner freundin und unzählige heineken und jack d. standen schon schwer genug sich überhaupt noch an das wochenende zu errinnern...

ja ja die weiber... aber zurück zum wesentlichen ich hab noch ein wenig source bevor das prog abgeklappt is aber alles was ich versucht hab endet in ner debugger exception...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure ListFileDir(Path: string; FileList: TStrings);
begin
//LBFiles.Items.Add(ini.ReadString('ListBox', ls[i], ''));
//txt.Add('LBFiles');
end;


tja das sind meine verzweifelten versuche... :cry:

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 11:08 
Du musst noch "Form1." davor schreiben. Aber ohne Anführungszeichen.
Dann kennt er allerdings deine Variablen "ls" und "txt" noch nicht.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 11:15 
also...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure ListFileDir(Path: string; FileList: TStrings);
begin
Form1.LBFiles.Items.Add(ini.ReadString('ListBox', ls[i], ''));
Form1.txt.Add('LBFiles');
end;


aber txt is doch global deklariert oder nich bin ich jetzt bescheuert geworden!?

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 11:16 
Sorry, habe ich übersehen.
Du wirst aber noch Probleme mit ls und txt bekommen, da diese noch nicht erzeugt sind, wenn du sie benutzt.
Außerdem ist i noch nicht initialisiert, hat also einen unbestimmten Wert.
Und durch die globale Deklaration von txt darf da dann doch kein Form1. vorstehen.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 11:32 
???

obwohl txt und ls global deklariert sind...das versteh ich nich aber wie bzw. wo bzw. wann müssen die dann deklariert werden??? was wäre wenn man txt und ls lokal deklariert das müsst edoch dann irgendwie so aussehen oder nich:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure ListFileDir(Path: string; FileList: TStrings);
var ls: TStringList;
var  txt: TStrings;
begin
LBFiles.Items.Add(ini.ReadString('ListBox', ls[i], ''));
txt.Add('LBFiles');
end;


fals das falsch is ich lass mich gerne eines besseren belehren.

ps: hab mir deine hp angekuckt sieht schon nich schlecht aus der zähler sieht gut aus :D

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 11:48 
Ändere deinen Source mal so (Achtung, ist nur ein Ausschnitt):
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
type
  TForm1 = class(TForm)
    LBFiles: TListBox;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ListFileDir(Path: string; FileList: TStrings);
  private
    { Private-Deklarationen }
    Zaehler : Integer;
    ini : TIniFile;
    ls: TStringList;
    txt: TStrings;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ListFileDir(Path: string; FileList: TStrings);
var
  i: integer;
begin
  LBFiles.Items.Add(ini.ReadString('ListBox', ls[i], ''));
  txt.Add('LBFiles');
end;

das ist objekt-orientiert.
Trotzdem musst ls und txt irgendwo erzeugen. Das sind Objekte, genau wie ini.
i muss natürlich auch irgendwie vorbelegt sein. Ich weiß aber noch nicht genau, was du damit vor hast.

Wegen der hp: Der Zähler ist optimistisch eingestellt. Ansonsten habe ich mir grafische Schnörkel verkniffen. Es geht ja auch um Delphi.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 12:04 
okay jetzt ist der moment gekommen an dem ich nich mehr weiter weiss :nixweiss:
wie kann ich die dann als objekte erzeugen???
das mit
ausblenden Delphi-Quelltext
1:
  i: integer;					


is glaube ich bloß ein überbleibsel was ich nich entfernt hab zumindest hab ich keine andere erklärung dafür...

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 12:11 
Im Prinzip geht das genauso, wie mit mit jedem anderen Objekt auch (z.B. dein ini).
Das i wird in deinem Source zur Zeit noch benutzt: ls[i].

Wann du deine Objekte erzeugst (Create) und wieder frei gibst (Free), hängt davon ab, wie du sie benutzen willst.
Mach dir doch erstmal einen Plan für die Routine und dann überlegst du dir, wie du welche Objekte verwenden willst/musst.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 12:19 
ok ich hzab mir ma kurz nen kopf gemacht und das is dabei rausgekommen (inch drauf achten wo das steht) is das so richtig geschrieben um die zu erzeugen...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure ListFileDir(Path: string; FileList: TStrings);
i: integer;
begin
LBFiles := TListBox.Create();
txt := TStrings.Create();
LBFiles.Items.Add(ini.ReadString('ListBox', ls[i], ''));
txt.Add('LBFiles');
end;

nur mit dem
ausblenden Delphi-Quelltext
1:
i: integer;					

weiss ich noch nix anuzfangen.

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 12:22 
Stimmt so.
Vor i: Integer muss noch Var stehen.
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 12:25 
dann sagt er das parameter fehlen :
ausblenden Delphi-Quelltext
1:
2:
LBFiles := TListBox.Create();
txt := TStrings.Create();

aber ich weis nich was da rein soll bei ini musste ja nur der name der datei rein die erstellt werden soll.

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 18.01.05 12:32 
Normalerweise muss in den Klammern self
tha_blaze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

xp
D7
BeitragVerfasst: Di 18.01.05 12:53 
ich hab ma unseren admin gefragt...
der hat das daraus gemacht...
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl, inifiles, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Timer1: TTimer;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button2Click(Sender: TObject);

   // procedure LBFilesClick(Sender: TObject);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  FFileMan: TButton;
  LBFiles: TListBox;
  SR: TSearchRec;
  ini:Tinifile;
  zaehler: integer;
  s: TStrings;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure ListFileDir(Path: string; FileList: TStrings);
var
  SR: TSearchRec;
begin
  if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) then
      begin
        FileList.Add(SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 //timer1.Enabled:=true;
 zaehler:=1;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if zaehler=5 then
  begin
   close;
  end
  else
  begin
    zaehler:= zaehler+1;
   // Showmessage('bin da'); exit;
   s:=TStringlist.Create;
    ListFileDir('c:\medlinq\easy\*.*',s);
    memo1.Clear;
    memo1.Lines.AddStrings(s);
    s.Free;
    memo1.Lines.SaveToFile('test.log');
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ini.Free;
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
 timer1.Enabled:=true;
end;

end.

läuft sogar jetzt soll das prog 5mal hintereinander die dateinamen in die test.log schreiben damit man vergleichen kann ob sich was geändert hat. :D

_________________
stehen ein einbeiniger und ein blinder auf der brücke sagt der einbeinige zum blinden "ich trete dir gleich in hintern", darauf der blinde "das will ich sehen"!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.01.05 12:55 
Sieht doch gut aus.
Hauptsache er hat dir auch die Sachen erklärt, die du nich konntest.
Du sollst ja schließlich was dabei lernen. :wink: