Fehlermeldung(gelöst)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Fehlermeldung(gelöst)

Beitrag von McCry »

Hallo,
ich habe jetzt seit einigen Tagen an einem kleinen Rechner gearbeitet der lediglich + und - rechnen soll.
Dabei ergab ein ziemlich frustrierendes Problem.
hier meinn code:

Code: Alles auswählen

TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    RadioButtonSub: TRadioButton;
    RadioButtonAdd: TRadioButton;
    RadioGroup1: TRadioGroup;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioButtonAdd.Checked then
                             begin
                               [color=#FF0000]Label1:= Edit1+Edit2;[/color]
                             end
                            else if RadioButtonSub.Checked then
                                                            begin
                                                             [color=#FF0000] Label1:=Edit1-Edit2;[/color]
                                                            end
                                                           else
                                                            begin
                                                              [color=#FF0000]Label1:='Rechnung auswählen';[/color]
                                                            end;
end;
 
end.

jedes mal werden folgende Fehler gemeldet(in rot markiert):
(z.30) unit1.pas(43,46) Error: Operator is not overloaded
(z.34) unit1.pas(47,76) Error: Operator is not overloaded
(z.38) unit1.pas(51,71) Error: Incompatible types: got "Constant String" expected "TLabel"



Danke schonmal im vorraus
MFG McCry
Zuletzt geändert von McCry am Sa 13. Aug 2011, 21:58, insgesamt 2-mal geändert.

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Fehlermeldung

Beitrag von Socke »

Lass mich raten, du hast schon mal mit VBA gearbeitet?

Komponenten (Edit-Felder, Labels, usw.) sind in Pascal ganz normale Variablen, das heißt du kannst ihnen auch nur andere Edit-Felder bzw. Labels zuweisen (wobei du dann natürlich aufpassen musst, dass du sie noch irgendwie freigeben kannst).

Wenn du die Beschriftung einer Komponente ändern willst, verwendest du die "Caption"-Eigenschaft:

Code: Alles auswählen

Label1.Caption := 'Jetzt wird das hier angezeigt';
An den Text-Inhalt kommst du über die "Text"-Eigenschaft dran; bevor du damit rechnen kannst, musst du das aber erst in eine Zahl konvertieren; VBA konvertiert automatisch zwischen Zahlen und Zeichenketten, aber prinzipiell kann es auch nicht direkt mit Zeichenketten rechnen. Umgekehrt musst du natürlich auch eine Zahl erst wieder in eine Zeichenkette umwandeln.

Code: Alles auswählen

Label1.Caption := IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Fehlermeldung

Beitrag von carli »

Kleiner Tipp am Rande: Code kann man mit

Code: Alles auswählen

 markieren. Direkt wenn man auf "Highligher" klickt.

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Fehlermeldung

Beitrag von Eclipticon »

Noch zwei Sachen zu deinem Code:
  • In einer RadioGroup brauchst Du nicht zusaetzlich Radiobuttons anlegen, das geht auch automatisch, wenn Items (?) gefuellt wird.
  • Wenn diese RadioGroup richtig initialisert ist, kann man den Fall, dass keiner der Items selektiert ist, vermeiden.
HTH

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Fehlermeldung

Beitrag von Heinrich Wolf »

Hallo,

Wie Eclipticon geschrieben hat:
Lösche RadioButtonSub und RadioButtonAdd aus Deinem Form.
Clicke auf Items in RadioGroup1 und trage zwei Zeilen ein:
&Add
&Sub
Clicke auf ItemIndex in RadioGroup1 und ändere -1 in 0 oder 1, je nachdem ob Add oder Sub voreingestellt sein sollen.
Das & sieht man im laufenden Programm nicht.
Stattdessen ist der folgende Buchstabe unterstrichen und Du kannst z.B. Add per Tastatur durch Alt-A auswählen.

Gruß
Heiner

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Fehlermeldung

Beitrag von McCry »

Danke an alle,
aber das was ihr meintet (Items)
hat bei mir nicht funktioniert.Weiß auch nicht warum.
Ich hab das jetzt erstmal mit Beispiel von Socke ausprobiert.
Es hat alles funktioniert, bis ich den vierten Punkt(Division) eingebaut habe:

Code: Alles auswählen

Label2.Caption := IntToStr(StrToInt(Edit1.Text)/StrToInt(Edit2.Text));
Diese Zeile wurde als Fehler markiert obwohl ich alle drei anderen Zeilen genauso eingebaut habe,
nur mit +,- und *.

Ich hoffe ihr habt da eine Lösung für mein Problem,
McCry

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: Fehlermeldung

Beitrag von Eclipticon »

McCry, aus der Division zweier Integer (Ganzzahlen) kommt keine Ganzzahl, sondern eine Fliesskommazahl raus ... daher funktioniert IntToStr natuerlich nicht. Schau mal, ob Du mit Format() oder FloatToStr() weiterkommst ...

Und was genau hast du bei Items gemacht?

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Fehlermeldung

Beitrag von Linkat »

Hallo NoCry,
erstmal herzlich willkommen im Lazarusforum.
Nun zu deinem Problem: Du möchtest integer-Zahlen mit '/' dividieren. Dies geht natürlich nicht. Entweder du nutzt die Ganzzahldivision (div) mit Rest (mod), oder du musst gleich mit Gleitkommazahlen (Float) rechnen.
In Pascal wird sehr streng auf die typ-Reinheit geachtet. Was zwar zunächst ein bischen Aufwand zu sein scheint, aber nach einer gewissen Gewöhnung deutlich strukturierter ist.

Gruß, Linkat

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Fehlermeldung

Beitrag von McCry »

Danke Linkat,
der Rechner funktioniert jetzt wunderbar.
Wenn ihr wissen wollt, wie er aussieht, könnt ihr ihn auf meiner Homepage
http://themrmccry.jimdo.com herunterladen.
(Gallerie :arrow: Downloads :arrow: Lazarus)
:D :D :D :D :D

Und übrigends:Ich heiße McCry und nicht Nocry :roll:

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Linkat
Lazarusforum e. V.
Beiträge: 560
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 4.0 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Fehlermeldung

Beitrag von Linkat »

Hallo McCry,
sorry, dass ich deinen Namen falsch gelesen habe.
Dein Programm habe ich zwar heruntergeladen, konnte es aber, weil ohne Windows, nicht laufen lassen. Vielleicht schreibst du noch dazu für welches Betriebsystem dein Programm ist. Kann dir deshalb leider keinen Komnentar zu deinem Programm geben.

Deine Webseite ist ganz iinteressant aufgebaut. Leider ist es sehr schwieig, die schwarze Schrift auf dem fast schwarzem Hnitergrund zu lesen.

Weiterhin viel Spaß beim Programmieren.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Fehlermeldung

Beitrag von McCry »

Danke für deine Tipp mit dem Betriebsystem.
Werde ihn auch gleich umsetzen.
Auch die Schriftfarbe auf meiner Homepage ändere ich sofort.

Es würde mich freuen wenn du die HP weiterempfehlen würdest.

LG McCry

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Fehlermeldung

Beitrag von Heinrich Wolf »

Hallo McCry,

Ich hab mir Deine HP mal angesehen und dort ein nimm.exe gefunden. Das kann man noch interessanter mit mehreren Häufchen Streichhölzern machen. Siehe hier: http://www.Wolf-Fuerth.de/nim.zip . Da ist ein DOS nim.exe, ein Linux nim und der Quellcode nim.c drin.

Gruß
Heiner

McCry
Beiträge: 42
Registriert: Mi 20. Jul 2011, 21:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Na Hier
Kontaktdaten:

Re: Fehlermeldung

Beitrag von McCry »

Hi Heiner,
ist eine interessante Version des Spiels.
NUr ein bisschen kompliziert mit den ganzen Häufchen und so vielen Streichhölzern.
Zwei Fragen: Wie lange hast du and diesem Spiel gearbeitet?
Und:Hast du es mit Pascal geschrieben?

LG
McCry

Code: Alles auswählen

Signatur[color=#FF0000]:=[/color]McCry
Website[color=#FF0000]:=[/color][color=#0000FF]ritualist.bplaced.net[/color]

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Fehlermeldung

Beitrag von Heinrich Wolf »

Hi, McCry,

ich weiß nicht mehr, wie lange ich an dem Spiel geschrieben habe. Ich hab's aber mehrfach angefasst. Als ich vor 1980 noch zur Schule ging, hat unser Lehrer uns die Sieger-Strategie beigebracht, nach welcher der Computer spielt. Damals hab ich es wahrscheinlich in BASIC programmiert, weil die Computer nichts anderes kannten. Den BASIC Quellcode hab ich nicht mehr. Irgendwann hab ich es neu programmiert in C. Das ist auch die Sprache, in der die Version erstellt ist, die ich Dir angeboten habe. Vor nicht langer Zeit hab ich die Bildschirmsteuerung von nim.c umgestellt auf die curses Bibliothek, sofern es unter Unix compiliert wird. Irgendwann hab ich es auch nochmal in Pascal programmiert. Soeben hab ich das zip Archiv unter der Adresse oben ausgetauscht. Jetzt ist auch nim.pas im Archiv.

Das Spiel von mir kann man auch so einstellen, dass es nicht kompliziert ist. Zum Starten werden allerhand Eingaben abgefragt. Da kann man angeben, dass man mit nur zwei oder wenigen Häufchen spielt. Die Sieger-Strategie ist simpel bei 2 Häufchen. Ab 3 Häufchen wird sie interessant.

LG
Heiner

Antworten