Einzelnen Beitrag anzeigen

Spezi

Registriert seit: 14. Feb 2009
Ort: Deutschland ;-)
65 Beiträge
 
Delphi 2005 Personal
 
#5

Re: [Fataler Fehler] F2084 Interner Fehler: C

  Alt 13. Mai 2009, 22:20
ich kann euch ja mal den Qurlltext der Funktion geben an deren ende der fehler auftritt....

Delphi-Quellcode:
procedure TFAbbHohl.ZeichnenClick(Sender: TObject);
var
  brennweite,bildweite,bildgroesse,gegenstandsweite, gegenstandsgroesse,zahl: Integer;
  Brennpunkt,Start,Ende,Gegenstand:TPoint;
  weiter1,weiter2,weiter3 : boolean;
  m : Double;
begin
  PaintBox1.refresh;
  //Eingabeprüfung
  weiter1 := true;
  try
    brennweite:= StrtoInt(brennweiteedit.Text);
    gegenstandsweite:=StrtoInt(weiteedit.Text);
    gegenstandsgroesse:=StrtoInt(groesseedit.Text);
  except
    showmessage('Zulässigen Ganzzahligen Wert eingeben!');
    weiter1 := false;
  end;
  if weiter1 then
  begin
    if brennweite <0 then
    begin
      showmessage('Wert größer Null eingeben!');
      brennweite:=250;
      weiter1:=false;
    end;
    if gegenstandsweite=2*brennweite then
    begin
      weiter2:=true;
      weiter1:=false;
    end;
    if gegenstandsweite=brennweite then
    begin
      showmessage('Gegenstandsweite ungleich Brennweite eingeben');
      gegenstandsweite:=300;
    end;
    if gegenstandsweite<brennweite then
    begin
      weiter3:=true;
      weiter1:=false;
    end;
    if gegenstandsgroesse<0 then
    begin
      showmessage('Wert größer Null eingeben !');
      gegenstandsgroesse:=50;
      weiter1:=false;
    end;
  end;
  if weiter1 then
  begin
    Brennpunkt:=Hohlspiegel (brennweite);
    //Optische Achse
    Paintbox1.Canvas.Pen.Style:=psdash;
    Paintbox1.Canvas.Pen.Color:=clblack;
    Paintbox1.Canvas.Pen.Width:=1;
    Paintbox1.Canvas.MoveTo(0,Clientheight *2 div 3);
    Paintbox1.Canvas.LineTo(clientwidth,Clientheight *2 div 3);
    Paintbox1.Canvas.Pen.Style:=pssolid;
    Paintbox1.Canvas.Pen.Color:=claqua;
    Paintbox1.Canvas.Pen.Width:=5;
    linie(Brennpunkt.X,Brennpunkt.Y,Brennpunkt.X,Brennpunkt.Y);
    Paintbox1.Canvas.Pen.Width:=1;
    //Gegenstandspfeil
    Paintbox1.Canvas.Pen.Color:=clred;
    Start.X:=Brennpunkt.X+brennweite-gegenstandsweite;
    Start.Y:=Brennpunkt.Y-gegenstandsgroesse;
    pfeil(Start.X,Brennpunkt.Y,Start.Y);
    //Parallelstrahl-->Brennpunktstrahl
    Paintbox1.Canvas.Pen.Color:=rgb(255,216,0);
    Ende:=Start;
    repeat
      inc(Ende.X);
    until Paintbox1.Canvas.Pixels[Ende.X,Ende.Y]=clblack;
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    Start:=Ende;
    m:=(Brennpunkt.Y-Start.Y)/(Start.X-Brennpunkt.X);
    Ende:=Brennpunkt;
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    zahl:=0;
    repeat
      dec(Ende.X);
      zahl:=zahl+1
    until (Ende.X=0)or(Ende.Y=clientheight);
    Ende.Y:=round(Ende.Y+(zahl*m));
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    // Brennpunktstrahl-->Paralellstrahl
    Paintbox1.Canvas.Pen.Color:=rgb(255,216,10);
    Start.X:=Brennpunkt.X+brennweite-gegenstandsweite;
    Start.Y:=Brennpunkt.Y-gegenstandsgroesse;
    Ende:=Start;
    m:=(Brennpunkt.Y-Start.Y)/(Brennpunkt.X-Start.X);
    zahl:=0;
    repeat
      inc(Ende.X);
      inc(zahl);
    until (Paintbox1.Canvas.Pixels[Ende.X,round(Ende.Y+(zahl*m))]=clblack)or (Ende.X=clientwidth);
    Ende.Y:=round(Ende.Y+(zahl*m));
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    Start:=Ende ;
    repeat
      dec (Ende.X);
      if Paintbox1.Canvas.Pixels[Ende.X,Ende.Y]=rgb(255,216,0) then zahl:=Ende.X;
    until Ende.X =0;
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    Paintbox1.Canvas.Pen.Color:=clred;
    pfeil(zahl,Brennpunkt.Y,Ende.Y);
  end;
  if weiter2 then
  begin
    Brennpunkt:=Hohlspiegel (brennweite);
    //Optische Achse
    Paintbox1.Canvas.Pen.Style:=psdash;
    Paintbox1.Canvas.Pen.Color:=clblack;
    Paintbox1.Canvas.Pen.Width:=1;
    Paintbox1.Canvas.MoveTo(0,Clientheight *2 div 3);
    Paintbox1.Canvas.LineTo(clientwidth,Clientheight *2 div 3);
    Paintbox1.Canvas.Pen.Style:=pssolid;
    Paintbox1.Canvas.Pen.Color:=claqua;
    Paintbox1.Canvas.Pen.Width:=5;
    linie(Brennpunkt.X,Brennpunkt.Y,Brennpunkt.X,Brennpunkt.Y);
    Paintbox1.Canvas.Pen.Width:=1;
    //Pfeile
    Paintbox1.Canvas.Pen.Color:=clred;
    pfeil(Brennpunkt.X+brennweite-gegenstandsweite,Brennpunkt.Y,Brennpunkt.Y-gegenstandsgroesse);
    pfeil(Brennpunkt.X+brennweite-gegenstandsweite,Brennpunkt.Y,Brennpunkt.Y+gegenstandsgroesse);
    //Strahlen
    Start.X:=Brennpunkt.X+brennweite-gegenstandsweite;
    Start.Y:=Brennpunkt.Y-gegenstandsgroesse;
    Ende:=Start;
    repeat
      inc(Ende);
    until Paintbox1.Canvas.Pixels[Ende.X,Ende.Y]=clblack;
    linie(Start.X,Start.Y,Ende.X,Ende.Y);
    Start.Y:=Brennpunkt.Y+gegenstandsgroesse;
    linie(Ende.X,Ende.Y,Start.X,Start.Y);
    Ende.X:=Start.X;
    repeat
      inc(Start);
    until Paintbox1.Canvas.Pixels[Ende.X,Ende.Y]=clblack;
    linie(Ende.X,Start.Y,Start.X,Start.Y);
    linie(Start.X,Ende.Y,Ende.X,Start.Y);
  end;
end;
Genaue Fehlermeldung:
[Fataler Fehler] UAbbHohl.pas(217): F2084 Interner Fehler: C10834

Bitte nicht über sinnhaftigkeit disskutieren
Wer Rechtschreibfehler findet darf Sie behalten
  Mit Zitat antworten Zitat