Thema: Delphi Threads hier sinnvoll?

Einzelnen Beitrag anzeigen

Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#4
  Alt 17. Okt 2002, 18:50
oki, ich poste hier mal den haupteil meines codes: (Erklärung der Veriablen weiter unten)

Code:
procedure geradezeichnen(term:string; index: integer; farbe: TColor;
canvas: Tcanvas;stringgrid:TStringgrid;gauge: TGauge);
var i,counter: integer;
    wert: extended;
    wertalt: extended;
    temp:integer;
begin;
canvas.Pen.color := farbe;

StringGrid.Cells[index,0] := term;

counter := 0;
x:=0;
wert := termtoreal(term);

if (von < 0) then temp := von*divi*-1
else temp := von*divi;

//Negativ
for i:= 1 downto (von*divi) do  begin;
//Berechnen des Wertes
x:=(i-1)/divi;
wertalt := termtoreal(term);
//Fertig

//Eintragen und zeichnen des Wertes
if nodraw = false then begin;
canvas.MoveTo(ileft+round((i*multi)/divi),itop-round(wert*multi));
canvas.lineTo(ileft+round(((i-1)*multi)/divi),itop-round(wertalt*multi));
end;
//StringGrid.Cells[0,temp - counter +2] := floattostr(i/divi);
StringGrid.Cells[index,temp - counter +2] := floattostr(wert);
//Fertig

wert := wertalt;

gauge.Progress := gauge.Progress+1;
inc(counter);

if pm then application.ProcessMessages;

end;

end;

counter := temp+2;

x:=0;
wertalt := termtoreal(term);

//Positiv
for i:= 0 to bis*divi do  begin;
//Berechnen des Wertes
x:=i/divi;
wert := termtoreal(term);
//Fertig

//Eintragen und zeichnen des Wertes
if nodraw = false then begin;
canvas.MoveTo(ileft+round((i*multi)/divi),itop-round(wert*multi));
canvas.lineTo(ileft+round(((i-1)*multi)/divi),itop-round(wertalt*multi));
end;
//StringGrid.Cells[0,counter-1] := floattostr(i/divi);
StringGrid.Cells[index,counter-1] := floattostr(wert);
//Fertig

wertalt := wert;

gauge.Progress := gauge.Progress+1;
inc(counter);

if pm then application.ProcessMessages;

end;
end;
end;
also hier die Erklärungen:
term: der Term, z.b. "2x+4"
index: irrelevant (zum Eintragen in ein Stringgrid)
farbe: Linien Farbe

divi: der Divisor, gibt an, auf wieviele Teile genau gerrechnet werden soll. Ist der divi zum Beispiel 1000 so wird jedes Tausendesl ausgerechnet un gezeichnet.

von: Zahlenbereich von
bis: Zahlenbereich bis

nodraw: soll gezeichnet werden?
ileft: x Koordinaten des Mittelpunkts (0|0)
multi: Zoom, Multi von 2 vergrößert das Bild um das Doppelte
itop: y Koordianten des Mittelpunkts (0|0)

wert: ausgerechneter Wert
wertalt: letzter berechneter Wert (zwecks Linienzeichnung)
counter: irrelevant (zum Eintragen in ein Stringgrid)
  Mit Zitat antworten Zitat