/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Delphi5: Trace/debug?
Fra : Kurt Guldbæk


Dato : 13-07-04 06:52

Hej NG.
Jeg bruger Delphi5.
Jeg er i gang med et program der viser nogle kurver grafisk på skærmen vha
Image.Canvas.MoveTo, ...LineTo mm.
Under debug vha F7/F8/F9 vil jeg gerne se hvad resultatet er på skærmen
efterhånden som den tegnes, men det kan jeg ikke.
Er det slet ikke muligt under debug?

Mvh Kurt



 
 
PØLLE (13-07-2004)
Kommentar
Fra : PØLLE


Dato : 13-07-04 14:53

> Jeg er i gang med et program der viser nogle kurver grafisk på skærmen vha
> Image.Canvas.MoveTo, ...LineTo mm.
> Under debug vha F7/F8/F9 vil jeg gerne se hvad resultatet er på skærmen
> efterhånden som den tegnes, men det kan jeg ikke.
> Er det slet ikke muligt under debug?
>

Jeg er ikke helt klar over, hvad du mener men det kan være, at du kan bruge
funktionen "Sleep(100)", hvor 100 = 100 ms

PØLLE



Kurt Guldbæk (13-07-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 13-07-04 17:29

"PØLLE" <NoName@mail.dk> skrev i en meddelelse
news:40f3e928$0$211$edfadb0f@dread16.news.tele.dk...
> > Jeg er i gang med et program der viser nogle kurver grafisk på skærmen
vha
> > Image.Canvas.MoveTo, ...LineTo mm.
> > Under debug vha F7/F8/F9 vil jeg gerne se hvad resultatet er på skærmen
> > efterhånden som den tegnes, men det kan jeg ikke.
> > Er det slet ikke muligt under debug?
> >
>
> Jeg er ikke helt klar over, hvad du mener men det kan være, at du kan
bruge
> funktionen "Sleep(100)", hvor 100 = 100 ms
>
> PØLLE
>
Jeg ville gerne, at det var muligt at køre i debugmode, hvor man så med F8
kan exekvere en linie, derefter trykke f.eks. på Alt-tab og se hvad
resultatet er på ens form.
Det, du foreslår kan give en ide om hvordan tegningen på formen sker, men
jeg vil gerne, om man så kan stoppe og se de forskellige variablers værdier
som i debugmode.
Jeg tror egentlig, at jeg kan nøjes med en 'sleep', hvor den først går
videre når der trykkes på en bestemt tast, altså det, der i gamle dage var
"Repeat until key = ' ' ; ". Hvod'n laver man det med D5?

Mvh Kurt




Christian Iversen (13-07-2004)
Kommentar
Fra : Christian Iversen


Dato : 13-07-04 21:24

Kurt Guldbæk wrote:

> "PØLLE" <NoName@mail.dk> skrev i en meddelelse
> news:40f3e928$0$211$edfadb0f@dread16.news.tele.dk...
>> > Jeg er i gang med et program der viser nogle kurver grafisk på skærmen
> vha
>> > Image.Canvas.MoveTo, ...LineTo mm.
>> > Under debug vha F7/F8/F9 vil jeg gerne se hvad resultatet er på skærmen
>> > efterhånden som den tegnes, men det kan jeg ikke.
>> > Er det slet ikke muligt under debug?
>> >
>>
>> Jeg er ikke helt klar over, hvad du mener men det kan være, at du kan
> bruge
>> funktionen "Sleep(100)", hvor 100 = 100 ms
>>
>> PØLLE
>>
> Jeg ville gerne, at det var muligt at køre i debugmode, hvor man så med F8
> kan exekvere en linie, derefter trykke f.eks. på Alt-tab og se hvad
> resultatet er på ens form.

Det kan du ikke - programmet er stoppet mens

> Det, du foreslår kan give en ide om hvordan tegningen på formen sker, men
> jeg vil gerne, om man så kan stoppe og se de forskellige variablers
> værdier som i debugmode.
>
> Jeg tror egentlig, at jeg kan nøjes med en 'sleep', hvor den først går
> videre når der trykkes på en bestemt tast, altså det, der i gamle dage var
> "Repeat until key = ' ' ; ". Hvod'n laver man det med D5?

Du kan gøre noget der nok er nemmere at debugge. Sæt "MainForm.KeyPreview :=
True;". Dette betyder at alle tastetryk giver en KeyPress/Up/Down event på
din form (selvom fokus er på noget andet end formen). Lav så noget lignende
dette i KeyPress:

Case Key Of:
Ord('1') : <tegn første figur>;
Ord('2') : <tegn anden figur>;
...
End;


Så kan du lave en

Ord('D') : <ligegyldig operation>;

Sæt så et breakpoint på denne linie. Nu kan du tegne figurer med 1-9 (fx) og
breake programmet med "D" når du vil se nærmere på en situtation.

--
M.V.H
Christian Iversen

Kurt Guldbæk (13-07-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 13-07-04 22:13

snip....
> > Jeg ville gerne, at det var muligt at køre i debugmode, hvor man så med
F8
> > kan exekvere en linie, derefter trykke f.eks. på Alt-tab og se hvad
> > resultatet er på ens form.
>
> Det kan du ikke - programmet er stoppet mens
>
> > Det, du foreslår kan give en ide om hvordan tegningen på formen sker,
men
> > jeg vil gerne, om man så kan stoppe og se de forskellige variablers
> > værdier som i debugmode.
> >
> > Jeg tror egentlig, at jeg kan nøjes med en 'sleep', hvor den først går
> > videre når der trykkes på en bestemt tast, altså det, der i gamle dage
var
> > "Repeat until key = ' ' ; ". Hvod'n laver man det med D5?
>
> Du kan gøre noget der nok er nemmere at debugge. Sæt "MainForm.KeyPreview
:=
> True;". Dette betyder at alle tastetryk giver en KeyPress/Up/Down event på
> din form (selvom fokus er på noget andet end formen). Lav så noget
lignende
> dette i KeyPress:
>
> Case Key Of:
> Ord('1') : <tegn første figur>;

Der kommer selvfølgelig en fejlmelding:
[Error] Incompatible types: 'Char' and 'Integer'

Snip.....

Det er sådan set nok udmærket, men det går altså så stærk med tegningen,at
jeg ikke har en chance for at afbryde.
Det ville passe mig bedre hvis jeg kunne stoppe programmet ved på passende
steder i tegningsrutinen at anbringe et 'Vent på knap trykket'.

Kan man ikke lave "Repeat until key = ' ' ; "?




Stig Johansen (14-07-2004)
Kommentar
Fra : Stig Johansen


Dato : 14-07-04 05:15

Kurt Guldbæk wrote:
[snip]
> Det ville passe mig bedre hvis jeg kunne stoppe programmet ved på passende
> steder i tegningsrutinen at anbringe et 'Vent på knap trykket'.

Hvad med en ShowMessage('Nu er jeg her'); ?

--
Med venlig hilsen
Stig Johansen

Kurt Guldbæk (14-07-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 14-07-04 05:42


"Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev i en meddelelse
news:40f4b402$0$23878$14726298@news.sunsite.dk...
> Kurt Guldbæk wrote:
> [snip]
> > Det ville passe mig bedre hvis jeg kunne stoppe programmet ved på
passende
> > steder i tegningsrutinen at anbringe et 'Vent på knap trykket'.
>
> Hvad med en ShowMessage('Nu er jeg her'); ?
>
> --
> Med venlig hilsen
> Stig Johansen

Det var lige den, der kunne bruges.
Tak til Alle.
/Kurt



Nicolai Hansen (14-07-2004)
Kommentar
Fra : Nicolai Hansen


Dato : 14-07-04 12:17

> Kan man ikke lave "Repeat until key = ' ' ; "?

Tjoe, men lidt sværere end bare sådan lige.

til dine private vars tilføjer du
KeyPressed: boolean;

i din OnCreate tilføjer du
Application.OnMessage:=MessageHandler;

du laver derefter to procedurer
procedure Tmain.MessageHandler(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.Message=WM_KEYDOWN then
begin
Handled:=true;
if (Msg.lParam div 65536)=57 then // 57=space
KeyPressed:=true;
end else
Handled:=false;
end;

procedure WaitSpace;
begin
KeyPressed:=false;
repeat
Application.ProcessMessages;
until KeyPressed;
end;

hver gang du vil vente på space, kalder du WaitSpace().

Den skrevne kode er ikke testet :)

/Nicolai

Søg
Reklame
Statistik
Spørgsmål : 177549
Tips : 31968
Nyheder : 719565
Indlæg : 6408820
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste