Avatar billede runem74 Nybegynder
30. maj 2002 - 19:09 Der er 5 kommentarer og
1 løsning

Status besked i programmer der laver store beregninger

Hej,

Jeg har lavt et program der laver store beregninger. Det kan tage optil en dag før programmet bliver færdig. Problemmet er at formen ikke opdateres under beregningerne. Dette betyder at man ikke kan integere med programmet under beregningerne. Man kan godt minimere programmet men så kan man ikke genskabe det i normal størelse igen før programmet er færdig med beregningen. Jeg har prøvt at lave en status besked i formens caption der udfra variabler i løkkestrukturer fortæller hvor langt programmet er kommet med beregningerne. Problemmet er at hvis jeg så minimere vinduet kan jeg ikke genskabe det for se hvorlangt programmet er. Mit spørgsmål er om der er nogen der har en god løsning til dette problem?

Mange hilsner,

Rune
Avatar billede speedy Nybegynder
30. maj 2002 - 19:23 #1
Der er 2 muligheder. Den lette og den lidt sværere :)

Den lette er at du engang i mellem inde i den beregn-løkke kalder application.processmessages;
Derved giver du programmet en mulighed for at "trække vejret" og lige opdatere formens udseende.

Den svære er at bygge beregningerne ind i en tråd, men hvordan du gør det vil jeg ikke komme nærmere ind på (Har jeg ikke kompetence nok til :))

/SpEeDy
Avatar billede stoney Nybegynder
30. maj 2002 - 19:24 #2
Lav dine beregninger i en tråd (thread)

http://delphi.about.com/cs/kbthread/index.htm

Stoney
Avatar billede runem74 Nybegynder
30. maj 2002 - 19:44 #3
Super- application.processmessages;- virker.

Mange tak.
Avatar billede hermandsen Juniormester
30. maj 2002 - 22:41 #4
>>runem74
Lige et råd... Application.ProcessMessages tager lidt ekstra regne kraft fra din PC, så hvis du kører den ofte, kommer beregningerne til at tage længere tid... Det er klart bedst at bygge beregningerne ind i en Thread... Den kan du også bede om at sende noget info tilbage til programmet, så du kan se hvor langt du er kommet...
Avatar billede runem74 Nybegynder
31. maj 2002 - 08:15 #5
>>Hermansen,
Du har ret jeg vil undersøg det link som Stoney angav.
Rune
Avatar billede hermandsen Juniormester
31. maj 2002 - 13:19 #6
>>runem74
Det er ellers ikke så svært...

I Delphi, vælg File->New...->Thread object. Skriv så et navn til din Thread, evt. "TBeregningsThread". I Execute proceduren skriver du så det din Thread skal lave.

Når du så skal bruge den, gør du følgende:

private
  Hest: TBeregningsThread;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Hest := TBeregningsThread.Create(False);
end;

Når du create'r den med False-parameter, vil den gå i gang så snart den er create't...

Men kig lidt i hjælpen, der kan du finde meget godt! ;)

//hermandsen
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