Wo liegt der Fehler, Delphi zu Lazarus Problem

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Wo liegt der Fehler, Delphi zu Lazarus Problem

Beitrag von Varus »

Hallo liebe Community,
vielleicht noch kurz zu mir. Ich bin Versorgungstechnik Student und muss ein kleines Delphi/Lazarus Programm schreiben was dann als Prüfungsleistung gilt. Da ich noch nie wirklich mit Delphi gearbeitet habe muss ich mir das erst noch beibringen wo ich auch gerade dran bin. Das klappt soweit alles gut, arbeite da mit so nem Buch was allerdings für Delphi gedacht ist und ich arbeite aus Kostengründen mit Lazarus. Aber es ist ja sehr ähnlich und hat auch bis her alles auf anhieb geklappt, bis her.

Nun zu dem Problem:
Ich möchte eine Art Bildschirmschone Programmieren, ist auch alles schön im Buch erklärt und ich verstehe soweit auch alles. Bei diesem Programm soll lediglich ein Roter Punkt auf schwarzem Grund hin und her laufen. Hier ist mal der Quellcode aus dem Buch:

Startbedingungen durch FormCreate:

Code: Alles auswählen

 
procedure TForm1.FormCreate(Sender: TObject);
begin
  image1.Left:=0;
  image1.Top:=0;
  image1.Width:=2000;
  image1.Height:=2000;
  image1.Canvas.Brush.Color:=RGBToColor(215,215,215);
end;       
 
 
Die Timerfunktion:

Code: Alles auswählen

 
procedure TForm1.Timer1Timer(Sender: TObject);
var x, y: Integer;
begin
x:=StrToInt(Label1.Caption);
y:=StrToInt(Label2.Caption);
 
Image1.Canvas.Pen.Color:=RGBToColor(215,215,215); //für vorherigen Kreis
Image1.Canvas.Brush.Color:=RGBToColor(215,215,215);
Image1.Canvas.Ellipse(x-10,y-10,x+10,y+10); //Hintergrundfarbe verwenden
x:=x+5; //neuer Mittelpunkt
 
Image1.Canvas.Pen.Color:=RGBToColor(255,0,0); //nun rote Farbe verwenden
Image1.Canvas.Brush.Color:=RGBToColor(255,0,0);
Image1.Canvas.Ellipse(x-10,y-10,x+10,y+10);
Label1.Caption:=IntToStr(x); Label2.Caption:=IntToStr(y) //Sichern
end;       
 
 
Der Compiler macht das alles und spuckt auch keine fehler aus, allerdings gleich beim Starten des Programms hängt er sich auf und sagt mir das "Label1 is an valid integer". Ich würde mal gerne wissen woran das liegt. Vielleicht kann einer von euch mir helfen!

DAnke für eure Hilfe!
Gruß Varus

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Wo liegt der Fehler, Delphi zu Lazarus Problem

Beitrag von Michl »

Das liegt zu 99% daran, dass

Code: Alles auswählen

x:=StrToInt(Label1.Caption);
hier "Label1" in deinem Formular in Label1.Caption eingetragen ist und dies auch beim Starten nicht von Dir geändert wird. Schreibe mal im Objektinspektor in Label1.Caption eine Zahl (z.B. "1"), dann verschwindet erstmal dieser Fehler...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2815
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Wo liegt der Fehler, Delphi zu Lazarus Problem

Beitrag von m.fuchs »

Ich mache mal meine Glaskugel an.

Code: Alles auswählen

x:=StrToInt(Label1.Caption);
Diese Zeile versucht die Caption des Label1 in eine Ganzzahl zu konvertieren. Aber ich wette, die Caption deines Labels enthält den Wert 'Label1'. Das ist aber keine Zahl.

Du müsstest mal in deinem Buch genauer nachlesen, sicher ist dort auch noch beschrieben mit welchen Werten du die Elemente deines Forms belegen sollst.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: Wo liegt der Fehler, Delphi zu Lazarus Problem

Beitrag von Jochen »

StrToInt gibt es auch mit einem default: http://www.freepascal.org/docs-html/rtl ... ntdef.html
zusätzlich (vor allem bei Typ-Umwandlungen) kann/sollte man Exceptions abfangen. Siehe Beispiel beim Link ganz unten

Varus
Beiträge: 19
Registriert: Fr 29. Nov 2013, 15:03

Re: Wo liegt der Fehler, Delphi zu Lazarus Problem

Beitrag von Varus »

Ach gott, wie einfach! Ja klar logisch, leuchtet mir auch vollkommend ein ;-). Ist auch langsam Zeit für Feierabend^^ :mrgreen:
Vielen Dank für den Anstoß!

Antworten