ich hab mir für den Anfang ein simples Programm zur Dreiecksberechnung vorgenommen. Laut der Narichtenbox, ist alles erfolgreich kompiliert, auch ohne Warnungen. Wenn ich aber versuche die exe zu starten kommt nur ein schwarzes Fenster und das schließt sich sofort wieder.

Da ich keine Ahnung habe, ob der Quelltext bei diesen Problem relevant ist, hab ich den hier mal noch reingestellt:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Interfaces, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Math;
type
{ TForm1 }
TForm1 = class(TForm)
btnberechnen: TButton;
edtgamma: TEdit;
edtbeta: TEdit;
edtalpha: TEdit;
edtc: TEdit;
edtb: TEdit;
edta: TEdit;
edtumfang: TEdit;
edtflaeche: TEdit;
edtx1: TEdit;
edtx2: TEdit;
edtx3: TEdit;
edty1: TEdit;
edty2: TEdit;
edty3: TEdit;
Image1: TImage;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
procedure btnberechnenClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
x1, x2, x3, y1, y2, y3:Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.btnberechnenClick(Sender: TObject);
var flaeche, a, b, c, s, alpha, beta, gamma:Real;
begin
x1:=StrToInt(edtx1.Text);
x2:=StrToInt(edtx2.Text);
x3:=StrToInt(edtx3.Text);
y1:=StrToInt(edty1.Text);
y2:=StrToInt(edty2.Text);
y3:=StrToInt(edty3.Text);
a:=Sqrt(Sqr(x2-x1)+Sqr(y2-y1));
b:=Sqrt(Sqr(x2-x3)+Sqr(y2-y3));
c:=Sqrt(Sqr(x3-x1)+Sqr(y3-y1));
edta.Text:=FloatToStr(a);
edtb.Text:=FloatToStr(b);
edtc.Text:=FloatToStr(c);
edtumfang.Text:=FloatToStr(a+b+c);
s:=(a+b+c)/2;
flaeche:=Sqrt(s*(s-a)*(s-b)*(s-c));
edtflaeche.Text:=FloatToSTr(flaeche);
alpha:=ArcCos(((0.5*power(a,2)+0.5*power(b,2)-0.5*power(c,2))/a)/b);
beta:=ArcCos(((0.5*power(a,2)-0.5*power(b,2)+0.5*power(c,2))/a)/c);
gamma:=ArcCos(((-0.5*power(a,2)+0.5*power(b,2)+0.5*power(c,2))/b)/c);
edtalpha.Text:=FloatToStr(RadToDeg(alpha));
edtbeta.Text:=FloatToStr(RadToDeg(beta));
edtgamma.Text:=FloatToStr(RadToDeg(gamma));
Image1.Canvas.MoveTo(x1+200,200-y1);
Image1.Canvas.LineTo(x2+200,200-y2);
Image1.Canvas.LineTo(x3+200,200-y3);
Image1.Canvas.LineTo(x1+200,200-y1);
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:Integer;
begin
Image1.Canvas.Create;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Fillrect(Image1.Canvas.ClipRect);
with Image1.Canvas do
begin
Pen.color:=clBlack;
moveto(5,305);
lineto(5,5);
lineto(2,0);
moveto(5,5);
lineto(8,0);
end;
with Image1.Canvas do
begin
Pen.color:=clBlack;
moveto(0,300);
lineto(300,300);
lineto(295,297);
moveto(300,300);
lineto(295,303);
end;
with Image1.Canvas do
begin
i:=0;
while i<300 do
begin
moveto(5+i,303);
lineto(5+i,207);
i:=i+25;
Textout(5+i,300,IntToStr(i));
end;
end;
with Image1.Canvas do
begin
i:=0;
while i<300 do
begin
moveto(2,300-i);
lineto(8,300-i);
i:=i+25;
Textout(3,300-i,IntToStr(i));
end;
end;
form1.show;
end;
end.