/ 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
Compilerfejl?
Fra : Kurt Guldbæk


Dato : 28-06-04 16:11

Hej NG.

Delphi 5.
Jeg har fået et mærkeligt problem: Tilsyneladende oversætter compileren ikke
all linier
Når jeg tracer gennem programmet springes der over nogle linier, som blot er
almindelige tilskrivninger.
Desuden er der ikke 'boller' i venstre margen, hvilket er med til at få mig
til at tro, at compileren springer linierne over.

Del af programmet: (Bollen til venstre er den, som er i margenen. Disse
linier bliver sprunget over ved kørselen.)
procedure TLoggerForm.btnAabnClick(Sender: TObject);

Var

TempStreng : String;

I, TabPos, DotPos, TmpInt, AntalData : Integer;

T1, T2 : Integer;

x_step, y_step, R1, R2,Y_Max, Y_Min : Real;

TempTabel : Array of Integer; //Tabel med temperatur *10

FugtTabel : Array of Integer; //Tabel med fugt *10



a.. begin
// hent fil og gem data i tabeller

klip



a.. X_Step := (Image1.Width-20)/AntalData;
b.. If MinT < MinF Then Y_Min := MinT
Else Y_Min := MinF;
a.. If MaxT > MaxF Then Y_Max := MaxT
Else Y_Max := MaxF;

R1:= Y_Max-Y_Min;

R2:= (Image1.Height)-20;

a.. R1:= 1.23;
R2:= 2.34;

Y_Step := R2/R1;

a.. Edit1.Text := FormatFloat('##.#',R1);
b.. Image1.Canvas.Pen.Color := clRed;
c.. Image1.Canvas.MoveTo(20,Round(TempTabel[1]));
d.. For I := 1 to AntalData do
Begin

a.. With Image1 do begin
b.. Canvas.LineTo(Round(I*1)+20,Round(TempTabel[I-1]/1));
End;

a.. End;
b.. end;
Hvis jeg i linien med
R1 := 1.24;
erstatter R1 med R2 bliver linien ikke udført!

Jeg har prøvet at ændre opsætningerne for compileren, men det hjælper ikke!
Er der nogen, der kan se hvor jeg dummer mig?

--

Med venlig hilsen
Kurt Guldbæk



 
 
Kurt Guldbæk (28-06-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 28-06-04 16:13

Jeg kan se, at bollerne er blevet erstattet med a. osv.
/Kurt

"Kurt Guldbæk" <k@g.s> skrev i en meddelelse
news:40e034fb$0$23869$14726298@news.sunsite.dk...
> Hej NG.
>
> Delphi 5.
> Jeg har fået et mærkeligt problem: Tilsyneladende oversætter compileren
ikke
> all linier
> Når jeg tracer gennem programmet springes der over nogle linier, som blot
er
> almindelige tilskrivninger.
> Desuden er der ikke 'boller' i venstre margen, hvilket er med til at få
mig
> til at tro, at compileren springer linierne over.
>
> Del af programmet: (Bollen til venstre er den, som er i margenen. Disse
> linier bliver sprunget over ved kørselen.)
> procedure TLoggerForm.btnAabnClick(Sender: TObject);
>
> Var
>
> TempStreng : String;
>
> I, TabPos, DotPos, TmpInt, AntalData : Integer;
>
> T1, T2 : Integer;
>
> x_step, y_step, R1, R2,Y_Max, Y_Min : Real;
>
> TempTabel : Array of Integer; //Tabel med temperatur *10
>
> FugtTabel : Array of Integer; //Tabel med fugt *10
>
>
>
> a.. begin
> // hent fil og gem data i tabeller
>
> klip
>
>
>
> a.. X_Step := (Image1.Width-20)/AntalData;
> b.. If MinT < MinF Then Y_Min := MinT
> Else Y_Min := MinF;
> a.. If MaxT > MaxF Then Y_Max := MaxT
> Else Y_Max := MaxF;
>
> R1:= Y_Max-Y_Min;
>
> R2:= (Image1.Height)-20;
>
> a.. R1:= 1.23;
> R2:= 2.34;
>
> Y_Step := R2/R1;
>
> a.. Edit1.Text := FormatFloat('##.#',R1);
> b.. Image1.Canvas.Pen.Color := clRed;
> c.. Image1.Canvas.MoveTo(20,Round(TempTabel[1]));
> d.. For I := 1 to AntalData do
> Begin
>
> a.. With Image1 do begin
> b.. Canvas.LineTo(Round(I*1)+20,Round(TempTabel[I-1]/1));
> End;
>
> a.. End;
> b.. end;
> Hvis jeg i linien med
> R1 := 1.24;
> erstatter R1 med R2 bliver linien ikke udført!
>
> Jeg har prøvet at ændre opsætningerne for compileren, men det hjælper
ikke!
> Er der nogen, der kan se hvor jeg dummer mig?
>
> --
>
> Med venlig hilsen
> Kurt Guldbæk
>
>



Lars G (28-06-2004)
Kommentar
Fra : Lars G


Dato : 28-06-04 17:40

Hej

"Kurt Guldbæk" <k@g.s> skrev i en meddelelse
news:40e034fb$0$23869$14726298@news.sunsite.dk...
> Delphi 5.
> Jeg har fået et mærkeligt problem: Tilsyneladende oversætter compileren
ikke
> all linier

Det er ikke en "FEJL"

Kompileren i Delphi er ret smart og fjerner code som aldrig bliver brugt !

Hvis du ikke vil have den til det skal du i Project>options>Compiler> og
fjern optimization !

> Når jeg tracer gennem programmet springes der over nogle linier, som blot
er
> almindelige tilskrivninger.

Ja koden er der jo ikke !

> Desuden er der ikke 'boller' i venstre margen, hvilket er med til at få
mig
> til at tro, at compileren springer linierne over.

Igen for af vise der ingen kode er.

Mvh
Lars G



Kurt Guldbæk (29-06-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 29-06-04 06:40

"Lars G" <lbg_@_adslhome.dk> wrote in message
news:40e049bd$0$160$edfadb0f@dtext02.news.tele.dk...
> Hej
>
> "Kurt Guldbæk" <k@g.s> skrev i en meddelelse
> news:40e034fb$0$23869$14726298@news.sunsite.dk...
> > Delphi 5.
> > Jeg har fået et mærkeligt problem: Tilsyneladende oversætter compileren
> ikke
> > all linier
>
> Det er ikke en "FEJL"
>
> Kompileren i Delphi er ret smart og fjerner code som aldrig bliver brugt !
>
> Hvis du ikke vil have den til det skal du i Project>options>Compiler> og
> fjern optimization !
>
> > Når jeg tracer gennem programmet springes der over nogle linier, som
blot
> er
> > almindelige tilskrivninger.
>
> Ja koden er der jo ikke !
>
> > Desuden er der ikke 'boller' i venstre margen, hvilket er med til at få
> mig
> > til at tro, at compileren springer linierne over.
>
> Igen for af vise der ingen kode er.
>
> Mvh
> Lars G
>
Den havde jeg ikke fanget, men det var årsagen.
Tak for hjælpen.
/Kurt



David Konrad (29-06-2004)
Kommentar
Fra : David Konrad


Dato : 29-06-04 10:39

"Lars G" <lbg_@_adslhome.dk> wrote in message
news:40e049bd$0$160$edfadb0f@dtext02.news.tele.dk...

> Det er ikke en "FEJL"
>
> Kompileren i Delphi er ret smart og fjerner code som aldrig bliver brugt !
>
> Hvis du ikke vil have den til det skal du i Project>options>Compiler> og
> fjern optimization !

I en debug-fase vil jeg fraråde det, da det vanskeliggør brug af watches mv.
Men, når det er Delphi 5 *kan* det faktisk godt være en programfejl. 5'eren
har nemlig en evne til at opføre sig nøjagtigt som beskrevet, og man er
ganske enkelt nødt til at lukke miljøet, starte det forfra og lave en build
for at få hele koden med i kompileringen - det sker faktisk. En tredje
mulighed er complete boolean-evaluation, hvilket Kurts kode også kan
indikere - hvis MinT *altid* er større end MinF vil de logiske operator
sætninger ganske enkelt aldrig blive kaldt - men det hænger så også sammen
med optimization. Min holdning er, at optimization kun bør være slået til
når man kompilerer en færdig version eller en milepæls-version - ikke medens
man udvikler, eller debugger - det er der absolut ingen grund til.



Kurt Guldbæk (29-06-2004)
Kommentar
Fra : Kurt Guldbæk


Dato : 29-06-04 16:30


"David Konrad" <david_konrad_FJERN_@hotmail.com> skrev i en meddelelse
news:40e1389f$0$23881$14726298@news.sunsite.dk...
> "Lars G" <lbg_@_adslhome.dk> wrote in message
> news:40e049bd$0$160$edfadb0f@dtext02.news.tele.dk...
>
> > Det er ikke en "FEJL"
> >
> > Kompileren i Delphi er ret smart og fjerner code som aldrig bliver brugt
!
> >
> > Hvis du ikke vil have den til det skal du i Project>options>Compiler> og
> > fjern optimization !
>
> I en debug-fase vil jeg fraråde det, da det vanskeliggør brug af watches
mv.
> Men, når det er Delphi 5 *kan* det faktisk godt være en programfejl.
5'eren
> har nemlig en evne til at opføre sig nøjagtigt som beskrevet, og man er
> ganske enkelt nødt til at lukke miljøet, starte det forfra og lave en
build
> for at få hele koden med i kompileringen - det sker faktisk. En tredje
> mulighed er complete boolean-evaluation, hvilket Kurts kode også kan
> indikere - hvis MinT *altid* er større end MinF vil de logiske operator
> sætninger ganske enkelt aldrig blive kaldt - men det hænger så også sammen
> med optimization. Min holdning er, at optimization kun bør være slået til
> når man kompilerer en færdig version eller en milepæls-version - ikke
medens
> man udvikler, eller debugger - det er der absolut ingen grund til.

Jeg har faktisk også afbrudt optimeringen og vil først slå den til igen til
slut.
Det er rart at kunne lave 'mellemregninger' undervejs.
/Kurt



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408182
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste