24. august 2003 - 17:30Der er
21 kommentarer og 1 løsning
Start tid
Hejsa Jeg vil gerne have sådan at når man trykker på en knap så starter der et ur som tæller op i Timer : minutter : sekunder tiden skal så ganges med et tal som hentes fra en combobox..
hejhej > Mega cool der er dog et lille problem. Det var meningen at tiden skulle ganges med værdien i compoboxen også give et resultat. alså tid * compobox = resultat ! Resulatatet skal så løbende blive "opdateret" efter som tiden køre.
Et anden spm. er det muligt at der fx i compoboxen står Ohøj og så have værdien 3 alså hvis man vælger ohøj så bliver 3 ganget med tiden :-) Hæver lige pointne til 100 :-)
function SecondToTime(const Seconds: Cardinal): Double; var ms, ss, mm, hh, dd: Cardinal; begin dd := Seconds div SecPerDay; hh := (Seconds mod SecPerDay) div SecPerHour; mm := ((Seconds mod SecPerDay) mod SecPerHour) div SecPerMinute; ss := ((Seconds mod SecPerDay) mod SecPerHour) mod SecPerMinute; ms := 0; Result := dd + EncodeTime(hh, mm, ss, ms); end;
procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := True; end;
function GetComboValue(Combobox: TComboBox): Integer; begin if Combobox.Text = 'Ohøj' then Result := 3; if Combobox.Text = 'Hejhej' then Result := 2; if Combobox.Text = 'Hej' then Result := 1; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Tid := Tid + 1; Label1.Caption := TimeToStr(SecondToTime(Tid*GetComboValue(ComboBox1))) end;
Programmet skal være til at udregne prisen for den tid man er online med en ikke fast forbindelse så resultatet skal ikke komme som et ur hvis du forstå :-) det skal bare være "prisen" dette have jeg tænkte mig var at jeg regnede sekund prisen ud for at være på internettet så skulle sekunderne i uret ganges med sekund prisen og blive til tallet det koser for den tid du har været på ! håber du forstår :-)
Det virker bedre men nu er der bare andre problemer :-) for det første kan et result i comboboxen ikke være 0,0035 okay så jeg skriver 00035! men kan man komventere sådan at det bliver i kr, alså for den tæller jo i øre kan man få det til ligeså snart at den når 100 øregrænsen og så få den til at skrive 1,(næste tæller op til 100) og så skifter den til 2 :-)
function IsInteger(Str: String): Boolean; var F: Single; Code: integer; begin val(Str,F,code); Result := True; if code <> 0 then Result := False end;
function PunktumTilKomma(Str: String): String; begin Result := AnsiReplaceStr(Str, '.', ','); end;
function GetComboValue(Combobox: TComboBox): Single; begin if IsInteger(Combobox.Text) then begin Result := StrToFloat(PunktumTilKomma(Combobox.Text)); end; if Combobox.Text = 'Ohøj' then Result := 3; if Combobox.Text = 'Hejhej' then Result := 2.25; if Combobox.Text = 'Hej' then Result := 1; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Tid := Tid + 1; Label1.Caption := TimeToStr(SecondToTime(Tid)); if Tid*GetComboValue(ComboBox1) >= 100 then Label2.Caption := FloatToStr(RoundTo((Tid*GetComboValue(ComboBox1))/100,-2)) + ' kr' else Label2.Caption := FloatToStr(RoundTo(Tid*GetComboValue(ComboBox1),-2)) + ' øre'; end;
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.