Avatar billede danielks Nybegynder
14. november 2002 - 19:49 Der er 29 kommentarer og
2 løsninger

fejl i delphisource

Hvad er fejlen her ???

procedure Txit.TimerTimer(Sender: TObject);
var
  C: Cardinal;
begin
  C := GetTickCount - Tid;
  if C >= Forskel then
  begin
    timer.Enabled := False;
    ShowMessage('Tiden er gået!');
  end
  else
  begin
    xit.lbl.caption := Format('%d dage %d timer %d minutter %d sekunder %d milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);
  end;

end;

Den besked med "tiden er gået" virker, det jeg ikke forstår er hvorfor jeg ikke får min caption til at virke...
Avatar billede fun22 Nybegynder
14. november 2002 - 19:56 #1
Du har sat den til at hvis den viser beskeden så skal den ikke vise din caption
Avatar billede danielks Nybegynder
14. november 2002 - 19:57 #2
ja mens C er mindre end Forskel... Eller ?
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:01 #3
Hvilken slags variabel er Forskel?
Her skal det være en Cardinal eller en Integer.
Avatar billede danielks Nybegynder
14. november 2002 - 20:05 #4
Integer...
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:07 #5
Prøv med følgende efter
--- cut ---
implementation

{$R *.DFM}
--- cut ---:
--- cut ---
var
  Forskel: Cardinal;
--- cut ---

Prøv derefter med:
--- cut ---
procedure Txit.start1Click(Sender: TObject);
begin
  Forskel := xit.Timer.Interval;
end;
--- cut ---
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:09 #6
Hvis der stadigvæk er problemer så prøv at lægge hele din kode ud, hvis der ikke er for meget ...
Avatar billede danielks Nybegynder
14. november 2002 - 20:13 #7
det eneste du har ændret er Forskel til Cardinal... efter hvad jeg kan se
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:14 #8
Ja, prøv! Som skrevet, hvis det ikke virker, så prøv at dumpe hele din kode :)
Avatar billede danielks Nybegynder
14. november 2002 - 20:16 #9
min kode fylder 9 A4 sider...

Og det er jo kun denne del jeg skal bruge en løsning til...
Avatar billede danielks Nybegynder
14. november 2002 - 20:18 #10
men i det hele taget kan jeg ikke se hvorfor min kode ikke skulle virke...
if delen virker perfekt, men else delen kolapser...
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:20 #11
Kan dit program overhovedet køre?
Avatar billede danielks Nybegynder
14. november 2002 - 20:20 #12
ja den kører fint...

her er koden...

implementation

{$R *.dfm}

procedure Txit.start1Click(Sender: TObject);
var

Forskel : Cardinal;

begin
        Tid := GetTickCount;
        Forskel := xit.Timer.Interval;
end;

procedure Txit.TimerTimer(Sender: TObject);
var
  C: Cardinal;
begin
  C := GetTickCount - Tid;
  if C >= Forskel then
  begin
    timer.Enabled := False;
  Close;
  end
  else
  begin
    xit.lbl.caption := Format('%d dage %d timer %d minutter %d sekunder %d milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);
  end;

end;
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:34 #13
Avatar billede danielks Nybegynder
14. november 2002 - 20:38 #14
Ja tag det roligt... Der er givet point nu...
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:39 #15
Det var bare en lille reminder :)
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:44 #16
Tilbage til dit spørgsmål -> Så vidt jeg kan se fungerer dit program som et æggeur og xit.lbl.caption viser tidsstatus.

Prøv med:
----------------------
implementation

{$R *.dfm}

var
  Forskel, Tid : Cardinal;

procedure Txit.start1Click(Sender: TObject);
begin
  Tid := GetTickCount;
  Forskel := xit.Timer.Interval;
  Timer.Enabled := true;
end;

procedure Txit.TimerTimer(Sender: TObject);
var
  C: Cardinal;
begin
  C := GetTickCount - Tid;
  if C >= Forskel then
  begin
    timer.Enabled := False;
  Close;
  end
  else
  begin
    xit.lbl.caption := Format('%d dage %d timer %d minutter %d sekunder %d milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);
  end;

end;
Avatar billede danielks Nybegynder
14. november 2002 - 20:45 #17
Kan du se hvad der er galt i kildekoden ?
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:49 #18
Min kommentar 14/11-2002 20:44:48 er mit umidlbart bedste bud ...
Avatar billede danielks Nybegynder
14. november 2002 - 20:52 #19
jeg opdagede lige at jeg får en (fejl)melding om at værdierne for Forskel og Tid slet ikke bliver bruger ??? hvorfor ikke ?
Avatar billede athlon-pascal Juniormester
14. november 2002 - 20:53 #20
Tror jeg har fundet en løsning (http://www.brovang.net/delphi/kilde/format.html) :)

procedure Txit.TimerTimer(Sender: TObject);
var
  C: Cardinal;
begin
  C := GetTickCount - Tid;
  if C >= Forskel then
  begin
    timer.Enabled := False;
  Close;
  end
  else
  begin
    xit.lbl.caption := Format('%u dage %u timer %u minutter %u sekunder %u milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);
  end;
Avatar billede danielks Nybegynder
14. november 2002 - 20:56 #21
bruger=brugt... SprogSpade ;-)
Avatar billede danielks Nybegynder
14. november 2002 - 21:00 #22
tjae det duer sikkert også... men det er ikke de linier vi skal konsentrere os om... erstattede lige

    xit.lbl.caption := Format('%u dage %u timer %u minutter %u sekunder %u milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);

Med en simpel

Close;

og nej der skete ingenting !!!
Avatar billede hermandsen Juniormester
15. november 2002 - 09:28 #23
Det kunne jo være at forskel er sat til for lidt! :)

Det er jo milisekunder, så prøv en gang at sætte den til 10000!

Jeg skal også nok hjælpe dig i dit andet spørgsmål... Hende den dejlige var bare på besøg i går, så der var vigtigere og sjovere ting at tage sig til end Eksperten! ;)
Avatar billede danielks Nybegynder
21. november 2002 - 10:16 #24
Den bliver defineret af en tekstboks og jeg har prøvet en højere værdi...
Avatar billede hermandsen Juniormester
22. november 2002 - 12:45 #25
Hmm... Det virker hos mig!
Avatar billede danielks Nybegynder
24. november 2002 - 12:33 #26
øhhh har lige sat dette ind i en button for at se om det virkede... det gør det ikke:

  xit.lbl.caption := Format('%d dage %d timer %d minutter %d sekunder %d milisekunder',
    [C div (1000*60*60*24), C div (1000*60*60) mod 24, (C div (1000*60)) mod 60, (C div 1000) mod 60, C mod 1000]);
Avatar billede hermandsen Juniormester
24. november 2002 - 19:28 #27
Giver den fejl eller hvad?
Avatar billede danielks Nybegynder
25. november 2002 - 11:41 #28
Nej bare ikke noget output...

Jeg er gået lidt væk fra denne løsning... men hvis det forslag du har givet til "Ur som sekunder" virker så får du også disse 30 point...
Avatar billede hermandsen Juniormester
25. november 2002 - 11:49 #29
Det har jeg da lavet et indlæg i...
Alt kode er postet... Kan godt smide det op på min server, hvis du gerne vil hente koden... Ellers kan jeg sende den til dig! ;)
Avatar billede danielks Nybegynder
25. november 2002 - 20:44 #30
Hermandsen> Giver du smide et SVAR så jeg kan give point :)
Avatar billede hermandsen Juniormester
26. november 2002 - 08:28 #31
Svar! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester