Delphi-PRAXiS
Seite 1 von 2  1 2      

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.
Seite 1 von 2  1 2      

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