Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi taschenrechner (erweiterung) (https://www.delphipraxis.net/135012-taschenrechner-erweiterung.html)

messie 3. Jun 2009 18:14

Re: taschenrechner (erweiterung)
 
Zitat:

Zitat von safak67
wenn ich eine funktion in delphi schreieb, wie binde ich das da ein, weil wenn ich das programm starte gibt er mir ne fehlermeldung an..

[Fehler] Calculator_Main.PAS(32): Ungenügende Forward- oder External-Deklaration: 'TFormTR.spResultClick'

Du hast für den SpeedButton "spResult" ein Onclick-Ereignis angelegt, die dazugehörige Routine aber gelöscht. Das findest Du im Objektinspektor (meist linke untere Seite). Lass Dir das Formular anzeigen, markiere den Speedbutton mit der Maus und wähle im Objektinspektor die Ereignisse an. Dann den Eintrag im OnClick einfach löschen.

Dieser Eintrag steht übrigens in der dfm-Datei.

Grüße, Messie


[Edit]
Nochmal :warn:

Beiträge mit vernünftiger Groß/Kleinschreibung und ohne Tippfehler lassen sich besser lesen und werden deshalb auch eher beantwortet. Lies' ruhig nochmal vor dem Absenden durch. Fehler lassen sich danach noch mit der Benutzung des Edit-Buttons beheben. Hilft wirklich.
[/Edit]

safak67 3. Jun 2009 20:57

Re: taschenrechner (erweiterung)
 
ok sorry, ich werde mehr auf meine rechtschreibung achten..

also ich hab das so gemacht wie oben beschrieben aber hab jetzt ein anderen fehler..

[Fehler] Calculator_Main.PAS(33): Bezeichner redefiniert: 'spResult'

Delphi-Quellcode:
unit Calculator_Main;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Buttons, StdCtrls;

type
  TFormTR = class(TForm)
    Sp7: TSpeedButton;
    Sp8: TSpeedButton;
    Sp9: TSpeedButton;
    Sp4: TSpeedButton;
    Sp5: TSpeedButton;
    Sp6: TSpeedButton;
    Sp1: TSpeedButton;
    Sp2: TSpeedButton;
    Sp3: TSpeedButton;
    Sp0: TSpeedButton;
    DecimalSep: TSpeedButton;
    spResult: TSpeedButton;
    SpPlus: TSpeedButton;
    SpMinus: TSpeedButton;
    SpMal: TSpeedButton;
    SpDurch: TSpeedButton;
    LabelAnzeige: TLabel;
    SpeedButton1: TSpeedButton;
    procedure SpZahlClick(Sender: TObject);
    procedure SpZeichenClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    function spResult(ATerm: string): Double;
  private
    { Private-Deklarationen }
    op : char;
  public
    { Public-Deklarationen }
  end;

var
  FormTR: TFormTR;

implementation

{$R *.DFM}

procedure TFormTR.SpeedButton1Click(Sender: TObject);
begin
LabelAnzeige.Caption := '0';
end;

function spResult(ATerm: string): Double;
var
  Op: string;
  iPos, i: Integer;
  Value1, Value2: Double;
begin
  for i := 0 to 3 do
  begin
    case i of
      0: Op := '+';
      1: Op := '-';
      2: Op := '*';
      3: Op := '/';
    end;
    iPos := Pos(Op, ATerm);
    if iPos > 0 then
    begin
      Value1 := spResult(Copy(ATerm, 1, iPos - 1));
      Value2 := spResult(Copy(ATerm, iPos + 1, Length(ATerm)));
      case i of
        0: spResult := Value1 + Value2;
        1: spResult := Value1 - Value2;
        2: spResult := Value1 * Value2;
        3: spResult := Value1 / Value2;
      end;
      Exit;
    end;
  end;
  spResult := StrToFloat(ATerm);
end;

jaenicke 3. Jun 2009 20:58

Re: taschenrechner (erweiterung)
 
Deine Prozedur heißt genauso wie der SpeedButton...
Bezeichner müssen eindeutig sein, egal ob Namen von Prozeduren oder von Komponenten.

safak67 3. Jun 2009 21:03

Re: taschenrechner (erweiterung)
 
wie jetzt?
wo ist jetzt der Fehler bei mir?

jaenicke 3. Jun 2009 21:04

Re: taschenrechner (erweiterung)
 
Du hast eine Funktion mit dem Namen spResult erstellt, dein SpeedButton heißt aber genauso... Eins von beidem musst du umbenennen.
Delphi-Quellcode:
function spResult(ATerm: string): Double;

safak67 3. Jun 2009 21:12

Re: taschenrechner (erweiterung)
 
ich krieg die krise.. jetzt habe ich ein anderen fehler..

[Fehler] Calculator_Main.PAS(69): Operator oder Semikolon fehlt
[Fehler] Calculator_Main.PAS(70): Operator oder Semikolon fehlt
[Fehler] Calculator_Main.PAS(32): Ungenügende Forward- oder External-Deklaration: 'TFormTR.Result'

Delphi-Quellcode:

    function Result(ATerm: string): Double;
  private
    { Private-Deklarationen }
    op : char;
  public
    { Public-Deklarationen }
  end;

var
  FormTR: TFormTR;

implementation

{$R *.DFM}

procedure TFormTR.SpeedButton1Click(Sender: TObject);
begin
LabelAnzeige.Caption := '0';
end;

function Result(ATerm: string): Double;
var
  Op: string;
  iPos, i: Integer;
  Value1, Value2: Double;
begin
  for i := 0 to 3 do
  begin
    case i of
      0: Op := '+';
      1: Op := '-';
      2: Op := '*';
      3: Op := '/';
    end;
    iPos := Pos(Op, ATerm);
    if iPos > 0 then
    begin
      Value1 := Result(Copy(ATerm, 1, iPos - 1));
      Value2 := Result(Copy(ATerm, iPos + 1, Length(ATerm)));
      case i of
        0: Result := Value1 + Value2;
        1: Result := Value1 - Value2;
        2: Result := Value1 * Value2;
        3: Result := Value1 / Value2;
      end;
      Exit;
    end;
  end;
  Result := StrToFloat(ATerm);
end;

jaenicke 3. Jun 2009 21:14

Re: taschenrechner (erweiterung)
 
Du hast unten in der Implementierung das TFormTR. vor dem Namen der Funktion vergessen. ;-)
Zitat:

Zitat von safak67
Delphi-Quellcode:
function TFormTR.Result(ATerm: string): Double;
var
  ...

// EDIT:
Zudem ist Result auch keine gute Idee, weil so der Rückgabewert einer Funktion heißt...
Warum nicht ein richtiger Name wie EvaluateTerm oder so...

safak67 3. Jun 2009 21:18

Re: taschenrechner (erweiterung)
 
was bedeutet
'=' erwartet aber '('
gefunden..

jetzt habe ich diese fehlermeldung

jaenicke 3. Jun 2009 21:20

Re: taschenrechner (erweiterung)
 
Ja, und in welcher Zeile? :glaskugel:

safak67 3. Jun 2009 21:40

Re: taschenrechner (erweiterung)
 
also es kommt ein message, aber danach springt die zwischen ....Result und (Aterm:....

Delphi-Quellcode:
function TFormTR.Result(ATerm: string): Double;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz