Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem beim erstellen einer Funktion (https://www.delphipraxis.net/73085-problem-beim-erstellen-einer-funktion.html)

sigma 12. Jul 2006 09:18


problem beim erstellen einer Funktion
 
hallo ich habe ein Problem mit meiner Funktion
ich will eine funkion schreiben damit ich nicht immer bei meinem Taschenrechner bei jeder zeile den quelltext schreiben muss will dort nur noch die funktion auf rufen und dann soll es klappen
kann mir jemand dabei vielleicht helfen
Delphi-Quellcode:
function Taste (tas:Tbutton): integer; forward;
var strZahl: string;
    dblX : double;

    begin
         if edtEingabe.Text = '0' then
            edtEingabe.Text := tas.caption
            else
            edt.Eingabe.Text := edtEingabe.Text + tas.Caption;
            strZahl := edtEingabe.Text;
            dblX := StrToFloat (StrZahl);
    end;
hoffe das man so eine Funktion erstellt
danke als mal für die hilfe

sakura 12. Jul 2006 09:22

Re: Funktion
 
Gib Deiner Frage bitte einen aussagekräftigen Titel. "Funktion" sagt nichts zu Deinem Problem aus :roll:

...:cat:...

P.S.: Auch mehr als ein Wort sind im Titel erlaubt.

ste_ett 12. Jul 2006 09:29

Re: problem beim erstellen einer Funktion
 
Ja, so sieht im Allgemeinen eine Funktion aus. :)

Warum setzt du den Rückgabewert nicht?
Wenn du keinen Rückgabewert brauchst, nimm am Besten eine Prozedur.

Delphi-Quellcode:
procedure Name(Param: ParamType);

sigma 12. Jul 2006 09:39

Re: problem beim erstellen einer Funktion
 
mit prozeduren kenn ich mich auch nicht aus
und bei meiner Funktion bekomme ich sau viele fehlermeldung
zum beispiel
[Fehler] Unit2.pas(37): Anweisungen sind im Interface-Abschnitt nicht erlaubt
[Fehler] Unit2.pas(39): Undefinierter Bezeichner: 'edtEingabe'
[Fehler] Unit2.pas(39): 'THEN' erwartet, aber Bezeichner 'Text' gefunden
[Fehler] Unit2.pas(57): 'THEN' erwartet, aber Bezeichner 'Text' gefunden
[Fehler] Unit2.pas(67): 'THEN' erwartet, aber Bezeichner 'Text' gefunden
[Fehler] Unit2.pas(77): 'THEN' erwartet, aber Bezeichner 'Text' gefunden
[Fehler] Unit2.pas(83): Anweisung erwartet, aber Dateiende gefunden

Hulig4n 12. Jul 2006 09:46

Re: problem beim erstellen einer Funktion
 
Du hast warscheinlich in anderen sprachen vorher programmiert. Einfach F1(help) benutzen. ;)
Der einzige unterschied zwischen function und procedure ist das die function nen wert zuruck gibt.
Alles andere funtz gleich. ;)

sigma 12. Jul 2006 09:54

Re: problem beim erstellen einer Funktion
 
ja ich hab vorher C++ programmiert und jetzt soll ich delphi lernen
hab aber meine Proleme wie man sieht

pacman1986 12. Jul 2006 10:00

Re: problem beim erstellen einer Funktion
 
Das Problem bei dir ist das proceduren und funktionen die vom programm erstellt werden von jedem element des programms verwendet werden koennen. auch koennen alle komponenten von diesen procedure genutzt werden. also entweder schreibst du vor jeder komponente Form1.

Delphi-Quellcode:
-> Form1.edtEingabe.Text;
-> Form1.tas.Caption;
oder aber du machst das bei deiner funktion. wobei ich tatsaechlich eher sagen wuerde das das eine procedur ist.

das wuerde dann so aussehen :

Delphi-Quellcode:
procedure TForm1.Taste (tas:Tbutton);
hier darf man aber nicht vergessen die funktion oben bei tform reinzuschreiben
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,buttons, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Taste (tas:Tbutton); // das ist gemeint
  private
    { Private declarations }
    //darf aber auch hier stehen
  public
    { Public declarations }
   //oder hier  
  end;
folglich wuerde deine procedure so aussehen

Delphi-Quellcode:
procedure TForm1.Taste (tas:Tbutton);
var strZahl: string;
    dblX : double;
begin
         if edtEingabe.Text = '0' then
            edtEingabe.Text := tas.caption
            else
            edtEingabe.Text := edtEingabe.Text + tas.Caption;
            strZahl := edtEingabe.Text;
            dblX := StrToFloat (StrZahl);
end;

Sharky 12. Jul 2006 10:05

Re: problem beim erstellen einer Funktion
 
Zitat:

Zitat von sigma
...damit ich nicht immer bei meinem Taschenrechner bei jeder zeile den quelltext schreiben muss ...

Hai sigma,

das ganze kannst Du auch ohne eine Funktion lösen. Das "Geheimniss" ist: Du erzeugst nicht für jeden Button eine eigene OnClick Methode sondern verwendest für alle Buttons die selbe. Über den Parameter Sender erfährst Du dann welcher Button das OnClick-Egeigniss ausgelöst hat:

Delphi-Quellcode:
procedure TDemo_Form.FormCreate(Sender: TObject);
begin
  Button1.OnClick := AlleButonOnClick;
  Button2.OnClick := AlleButonOnClick;
  Button3.OnClick := AlleButonOnClick;
  Button4.OnClick := AlleButonOnClick;
end;

procedure TDemo_Form.AlleButonOnClick(Sender: TObject);
var
  zahl : string;
begin
  zahl := (Sender as TButton).Caption;
  // Der Sender wird ausgewertet und auf ein TButton gecastet.
end;
Du musst die Zuweisung der Methode nicht im OnCreate der Form machen. Du kannst auch einfach alle Buttonsmarkieren und dann im Objectinspektor allen das selbe OnClick zuweisen.

sigma 12. Jul 2006 10:18

Re: problem beim erstellen einer Funktion
 
also ich werde da nicht richtig schlau draus kann mir vielleicht jemand mal ne funktion schreiben damit ich mal sehe wie die aussehen soll

pacman1986 12. Jul 2006 10:23

Re: problem beim erstellen einer Funktion
 
Delphi-Quellcode:
function addieren(a,b:integer):integer;
begin
  result:=a+b;
end;
Aufruf Beispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var zahl1,zahl2,endzahl:integer;
begin
  zahl1 := StrToInt(edit1.Text);
  zahl2 := StrToInt(edit2.Text);
  endzahl := addieren(zahl1,zahl2);
end;
edit:delphitags

uwewo 12. Jul 2006 10:37

Re: problem beim erstellen einer Funktion
 
@Sharky

Sorry wenn ich mich einmische, aber man kann doch die OnClick Methode von Button1 jedem Button
im Objektinspektor zuweisen.

Damit brauch man keine neue Methode erstellen.

pacman1986 12. Jul 2006 10:39

Re: problem beim erstellen einer Funktion
 
was aber ein bisse irritierend wirkt wenn alle buttons die methode von button1 verwenden da wuerd ich mir lieber die muehe von 3 zeilen machen :)

uwewo 12. Jul 2006 10:48

Re: problem beim erstellen einer Funktion
 
@pacman

Ich kann mir nicht vorstellen das sein Rechner am Ende nur 3 Zahlen(Buttons) verwendet. :wink:

pacman1986 12. Jul 2006 10:57

Re: problem beim erstellen einer Funktion
 
damit meinte ich drei zeilen die benoetigt werden um eine neue procedur zu erstellen.

Delphi-Quellcode:
1 procedure TDemo_Form.AlleButonOnClick(Sender: TObject);
2 begin
3 end;

uwewo 12. Jul 2006 11:00

Re: problem beim erstellen einer Funktion
 
@pacman

Sorry die 3 für die Methode plus

Delphi-Quellcode:
procedure TDemo_Form.FormCreate(Sender: TObject);
begin
  Button1.OnClick := AlleButonOnClick;
  Button2.OnClick := AlleButonOnClick;
  Button3.OnClick := AlleButonOnClick;
  Button4.OnClick := AlleButonOnClick;
end;
Ist ja auch egal ich würde es halt über den Objektinspector lösen. :-D

sigma 12. Jul 2006 11:08

Re: problem beim erstellen einer Funktion
 
also ich hab immer noch das selbe Problem es läuft einfach nicht
hier ist mal mein Quelltext vielleicht findet von euch ja jemand den fehler

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Taste (tas:Tbutton);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
procedure TForm1.Taste (tas:Tbutton);
var strZahl: string;
    dblX : double;
begin
         if Form1.edtEingabe.Text = '0' then
            Form1.edtEingabe.Text := tas.caption
            else
            Form1.edtEingabe.Text := form1.edtEingabe.Text + tas.Caption;
            strZahl := edtEingabe.Text;
            dblX := StrToFloat (StrZahl);
end;
so bin nur noch bis um halb eins auf der arbeit
melde mich dann morgen wieder hoffe das ihr mir vielleicht weiter helfen könnt

Sharky 12. Jul 2006 11:20

Re: problem beim erstellen einer Funktion
 
Zitat:

Zitat von Sharky
...
Du musst die Zuweisung der Methode nicht im OnCreate der Form machen. Du kannst auch einfach alle Buttonsmarkieren und dann im Objectinspektor allen das selbe OnClick zuweisen.

Habe ich in meinem Posting doch extra geschrieben. Ich habe das OnCreate nur gezeigt damit man sieht was ich mache. ;-)

Hier das Video wie ich es mache. *g*

Aber das ist jetz OT.

uwewo 12. Jul 2006 11:57

Re: problem beim erstellen einer Funktion
 
Schönes Video.

Im Prinzip erhalten wir das gleiche Ergebnis und das ist das wichtigste, oder? :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.

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