Jag har ett program som skriver till en fil och första raden är en tid typ 19:48 Hej Hejsan Sven Hej Hej Hej jo för att jag vill verkligen veta att man bara har skrivit tex 19:47 Hej >Vad fae... är LeftSstring finns inte i Delphi ! eller finns Nu funkar det...timer-problem
och har i formCreate denna lilla kod:
<code>
texten := Tstringlist.Create;
With texten do
Begin
LoadFromFile('komihåg.txt');
End;
</code>
detta kan då bli:<br>
19:48<br>
2002-11-04<br>
lite text<br>
lite mera text.<br>
i min timer som ska kolla om tiden i filen är lika med klockan (Now)
koden är:
<code>
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if leftstr(TimeTostr(now),5) = texten.Strings[0] then
begin
showmessage('bah');
timer1.Enabled := false;
end;
end;
</code>
jo det funkar men bara om man stänger av programmet och startar upp programmet igen. Jag vill att man ska kunna ha programmet öppet hela tiden(har tänkt att lägga programmet i systray sen också så detta är viktigt)
hoppas ni förstår
/bjSv: timer-problem
Efter denna princip
I Form Create lägger du till
Timer1.Tag := 0 ;
Timer1.Interval := 27000 ; //säker träff varje minut
Timer1.Enabled := True ;
I Timer1 kan det se ut efter denna princip
Procedure TForm1.Timer1Timer(Sender: TObject);
begin
If leftstr(TimeTostr(now),5) = texten.Strings[0] Then Begin
If Timer1.Tag = 0 Then Begin
showmessage('bah') ;
Timer1.Tag := -1 ;
End //If timer1 Obs du får inte ha sluttecken här före Else
Else
Timer1.Tag := 0 ;
End ;
end;
mvh
SvenSv: timer-problem
jag får inte din kod att fungera..=/
jag väntar en hela minuten och kollar(pga timers uppdaterings intervall)
men det kommer inget..=(
/bjSv: timer-problem
Den visade principen är riktig , har inte möjlighet att kolla
Fungerar 19:48 principen så skall det vara Ok
Du skall alltså sätta en Flagga i Timer1.Tag som visar
att under denna minut har jag gjort mitt jobb
och är klar att ta emot ett nytt direktiv.
Du skall inte sätta Timer1.Enabled := False
Förresten jag tänkte kanske fel Testa att sätta ett
; sluttecken efter End i den inneslutna IF satsen
SvenSv: timer-problem
Ett bättre alternativ kan vara
I Form Create lägger du till
Timer1.Tag := 0 ;
Timer1.Interval := 27000 ; //säker träff varje minut
Timer1.Enabled := True ;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If (leftstr(TimeTostr(now),5) = texten.Strings[0]) And
(Timer1.Tag = 0) Then Begin
showmessage('bah');
Timer1.Tag := -1 //Obs inget sluttecken
Else
Timer1.Tag := 0 ;
End ;
end;
SvenSv: timer-problem
Jag har synpunkter på: (leftstr(TimeTostr(now),5) = texten.Strings[0]
Du krånglar till det så in i helv.....
Vad är tex leftStr för nåt. Hela den raden kan skrivas mycket enklare.
Så min fråga blir om du kör ShowMessage((leftstr(TimeTostr(now),5)) blir det tex 19:48
undrar med vänliga hälsningar "Håll rumpan styv"
SvenSv: timer-problem
man kan ju skriva 19:47:01 och när jag skriver till filen skriver jag bara 19:47 även om jag skriver 19:47:01 i min textruta...
och för att now ska bli lika som 19:47 måste jag ta dom första fem tecknen i now som är tex 19:47:02
DÄRFÖR använder leftstr
/bjSv: timer-problem
Men !!!! Vad fae... är LeftSstring finns inte i Delphi ! eller finns
det i senare versioner , jag körDelphi V 5.
Typisk VB "gör det enkelt för dumhuvud"
kom igen Bj "Du kommer att bli världmästare"
SvenSv: timer-problem
det i senare versioner , jag körDelphi V 5.
leftStr() finns i unit: StrUtils (om du skriver leftstr och markerar och klickar F1 så ser du vilken unit den finns i) du måste inkludera den...Sv: timer-problem
jag måste hämta textfilens innehåll i timern:
<code>
var text:string;
i:integer;
begin
texten := Tstringlist.Create;
with texten do
begin
LoadFromFile('komihåg.txt');
end;
if (leftstr(TimeTostr(now),5) = texten.Strings[0]) and
(DateTostr(Now) = texten.strings[1]) then
begin
for i := 2 to texten.Count - 1 do text := text + texten.Strings[i] + #13#10;
showmessage(text);
timer1.Enabled := false;
end;
end;
</code>