anoniem Geplaatst: 29 april 2004 Delen Geplaatst: 29 april 2004 Goedemorgen allemaal, Ik ben nu omngeveer een half jaartje mee bezig met Delphi en ben langzaamaan lerende. Nu ben ik bezig voor een vriend om een programmaatje te maken dat op gepaalde tijden 1 geluid afspeelt. Het zit zo: Je leest een bestand in met openen, in dat bestand staan de tijden: 14:50:03 14:59:10 enz En die lees ik in in een ListBox. Daarna worden de items in een Array gegooid en wil ik dus controleren of de windows tijd gelijk is aan die tijd. Nu heb ik de hele code geschreven, maar het lijkt al verkeerd te gaan bij het in de Array stoppen (Daarom heb ik er even een memo testveld bij gegooid).. Ziet misschien iemand de fout? [code:1:87741d2968]unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, CheckLst, ExtCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; Bestand1: TMenuItem; Open1: TMenuItem; N1: TMenuItem; Exit1: TMenuItem; DlgOpen: TOpenDialog; ListTime: TListBox; Timer: TTimer; Label1: TLabel; Memo1: TMemo; TimerClock: TTimer; procedure Exit1Click(Sender: TObject); procedure Open1Click(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure TimerClockTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; VarI, VarT, VarLoad: Integer; VarTime: Array of String; implementation {$R *.dfm} procedure TForm1.Exit1Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.Open1Click(Sender: TObject); begin if DlgOpen.Execute then try ListTime.Items.LoadFromFile(DlgOpen.Filename); SetLength(VarTime, ListTime.Count + 1); VarI := 0; VarLoad := 1; while VarI < ListTime.Count do begin VarTime[VarI] := ListTime.Items[VarI]; VarI := VarI + 1; Memo1.Lines.Add(VarTime[VarI]); end; except ShowMessage('Fout bij laden bestand.') end; end; procedure TForm1.TimerTimer(Sender: TObject); begin if VarLoad = 1 then begin VarI := 0; while VarT = 0 do begin if TimeToStr(Time) = VarTime[VarI] then begin VarI := 0; ShowMessage('Het is tijd.'); exit; end else VarI := VarI + 1; end; end; end; procedure TForm1.TimerClockTimer(Sender: TObject); begin Label1.Caption := TimeTostr(Now); end; end. [/code:1:87741d2968] Alvast hartelijk bedankt! Johan[/quote] Quote Link naar reactie
anoniem Geplaatst: 7 mei 2004 Auteur Delen Geplaatst: 7 mei 2004 Er zitten idd een aantal foutjes in SetLength(VarTime, ListTime.Count + 1); Waarom + 1? Een array begint ook met0. Trouwens Listbox1.Items is ook een array :) [code:1:d542e0cb46] while VarI < ListTime.Count do begin VarTime[VarI] := ListTime.Items[VarI]; VarI := VarI + 1; Memo1.Lines.Add(VarTime[VarI]); end; [/code:1:d542e0cb46] Kan je beter met een for loopje doen. [code:1:d542e0cb46] begin if VarLoad = 1 then begin VarI := 0; while VarT = 0 do begin if TimeToStr(Time) = VarTime[VarI] then begin VarI := 0; ShowMessage('Het is tijd.'); exit; end else VarI := VarI + 1; end; end; end; [/code:1:d542e0cb46] Net als deze, deze kan je het beste ook met een for-loopje doen Trouwens met die check van je, blijft ie dezelfde var controleren want je checkt [b:d542e0cb46]VarT[/b:d542e0cb46] en je hoogt [b:d542e0cb46]VarI[/b:d542e0cb46] met 1 op 8) Ow ja ophogen met 1 kan nog makkelijker: Inc(VarT); Ik hoop dat dit je wat op weg helpt :) Quote Link naar reactie
anoniem Geplaatst: 7 mei 2004 Auteur Delen Geplaatst: 7 mei 2004 [quote:d2351e6789="Dumpie"] Ik ben nu omngeveer een half jaartje mee bezig met Delphi en ben langzaamaan lerende. Nu ben ik bezig voor een vriend om een programmaatje te maken dat op gepaalde tijden 1 geluid afspeelt. Het zit zo: Je leest een bestand in met openen, in dat bestand staan de tijden: 14:50:03 14:59:10 enz [/quote:d2351e6789] Vraag: Waarom wil je tot op de seconde nauwkeurig de tijd controleren? Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen