Ga naar inhoud

[Delphi] Tijden in Array dan uitlezen


Aanbevolen berichten

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]
Link naar reactie
  • 2 weken later...
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 :)
Link naar reactie
[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?
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...