Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Deklaration von Proceduren (https://www.delphipraxis.net/177452-deklaration-von-proceduren.html)

Frage95 7. Nov 2013 09:27

Deklaration von Proceduren
 
Hey, ich habe eine Frage bezüglich deklaration von proceduren.
Hatte biher eigentlich keine Probleme damit doch seit ich 2 Units in Projekt eingebunden habe bekomme ich andauern den Fehler

Ungenügend forwar - oder external Deklaration


Obwohl ich die procedure test im interface teil deklariert habe und sie im implementations unten aufgerufen und bearbeitet habe.

:?::?::?::?:

Kann mir jemand sagen welchen Fehler ich übersehe ?

Codebeispiel ist bei dieser Frage ja nicht unbedingt nötig kann man sich ja ausmalen:thumb::thumb:

:)

Back2Code 7. Nov 2013 09:30

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234828)
Codebeispiel ist bei dieser Frage ja nicht unbedingt nötig kann man sich ja ausmalen

Das kann an allen möglichen Sachen liegen, also poste doch mal deine Code.

Uwe Raabe 7. Nov 2013 09:35

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234828)
Codebeispiel ist bei dieser Frage ja nicht unbedingt nötig kann man sich ja ausmalen:thumb::thumb:

Das ist wirklich das Dümmste, was ich hier je gelesen habe!

Frage95 7. Nov 2013 09:35

AW: Deklaration von Proceduren
 
Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, slstbox, CurvyControls, Winsock, AdvGlassButton, ColListb;

type
  TfrmMainForm = class(TForm)
    EdNickname: TCurvyEdit;
    Label1: TLabel;
    ListBox1: TListBox;
    BtnAusführen: TAdvGlassButton;
    procedure BtnAusführenClick(Sender: TObject);
//    procedure ListBox1DblClick(Sender: TObject);
      procedure test;
Delphi-Quellcode:

implementation

procedure test;
var
ta,Test : string;
begin
Ta := frmMainForm.EdNickname.Text;
Test := frmMAinform.ListBox1.Items[frmMainform.ListBox1.ItemIndex];
if Test = Ta then begin
   frmClient.Show;
end;
end;
Komm von deinem Ross runter Uwe oder bist du ein vom Himmel gefallener Meister! ^^

DeddyH 7. Nov 2013 09:36

AW: Deklaration von Proceduren
 
Was ist denn der Unterschied zwischen einer Methode und einer regulären Prozedur?

baumina 7. Nov 2013 09:38

AW: Deklaration von Proceduren
 
http://www.delphi-treff.de/object-pa...nd-funktionen/

Ist die Procedure innerhalb eines Formulars deklariert (ACHTUNG, bitte im private-Bereich), dann:
Delphi-Quellcode:
procedure TfrmMainForm.test;
begin
 ...
end;

Back2Code 7. Nov 2013 09:40

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1234830)
Zitat:

Zitat von Frage95 (Beitrag 1234828)
Codebeispiel ist bei dieser Frage ja nicht unbedingt nötig kann man sich ja ausmalen:thumb::thumb:

Das ist wirklich das Dümmste, was ich hier je gelesen habe!

:thumb: Delphianer <> Hellseher

Frage95 7. Nov 2013 09:43

AW: Deklaration von Proceduren
 
Den Delphi Treff kenne ich schon

aber was genau wollt Ihr mir sagen?

ich habe das bisher (letzen 2 Monate) nicht anders gemacht als heute
doch jz funkt es nicht mehr ? :?:

Back2Code 7. Nov 2013 09:46

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234836)
Den Delphi Treff kenne ich schon

aber was genau wollt Ihr mir sagen?

ich habe das bisher (letzen 2 Monate) nicht anders gemacht als heute
doch jz funkt es nicht mehr ? :?:

Wenn du eigene Proceduren in einer VCL Anwendung einbauen willst musst du vor dem procedure Namen noch den Namen deiner Form davorsetzen in deinem Fall:

Delphi-Quellcode:
 TfrmMainForm.DeinProcedurname
:!: Beim Type natürlich ohne...

DeddyH 7. Nov 2013 09:48

AW: Deklaration von Proceduren
 
Ich möchte noch einmal auf meine Frage in #5 zurückkommen, denn wenn man das nicht beantworten kann, kann man Eure Vorschläge zwar umsetzen, weiß aber nicht, woran es letztendlich lag.

Frage95 7. Nov 2013 09:48

AW: Deklaration von Proceduren
 
Das habe ich jz gemacht erhalte aber den gleichen Fehler plus noch einen oben drauf

"Diese Form des MEthodenaufrufs ist nur für Klassenmethoden erlaubt"

Frage95 7. Nov 2013 09:50

AW: Deklaration von Proceduren
 
Unter Methode versteht man in Delphi

functionen oder Prozeduren

fuctionen und proceduren werden auch routinen gennant

beantwortet das deine frage?

DeddyH 7. Nov 2013 09:51

AW: Deklaration von Proceduren
 
Nein.

Back2Code 7. Nov 2013 09:51

AW: Deklaration von Proceduren
 
Greifst du mit der procedure test aus einer anderen Unit auf eine VCL Komponente zu?

Frage95 7. Nov 2013 09:53

AW: Deklaration von Proceduren
 
Nein tue ich nicht.

Würdest du mir die antwort sagen ? :shock:

baumina 7. Nov 2013 09:54

AW: Deklaration von Proceduren
 
Dann halt nochmal ausführlich:

Delphi-Quellcode:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, slstbox, CurvyControls, Winsock, AdvGlassButton, ColListb;

type
  TfrmMainForm = class(TForm)
    EdNickname: TCurvyEdit;
    Label1: TLabel;
    ListBox1: TListBox;
    BtnAusführen: TAdvGlassButton;
    procedure BtnAusführenClick(Sender: TObject);
  private  // <----
      procedure test;
  end;
Delphi-Quellcode:

implementation

procedure TfrmMainForm.test; // <---
var
ta,Test : string;
begin
Ta := EdNickname.Text;
Test := ListBox1.Items[ListBox1.ItemIndex];
if Test = Ta then begin
   frmClient.Show;
end;
end;

Back2Code 7. Nov 2013 09:56

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234844)
Nein tue ich nicht.

Würdest du mir die antwort sagen ? :shock:

Wieso tust du dann vor

Delphi-Quellcode:
frmMAinform.ListBox1.Items
noch den Formnamen dazu? Ist doch nur notwendig wenn deine Procedure ausgelagert wäre in einer anderen Unit...

Frage95 7. Nov 2013 09:56

AW: Deklaration von Proceduren
 
okay danke es funktioniert

aber wieso muss ich diese in private deklarieren?

möchte nur verstehn was ich da tue?

Back2Code 7. Nov 2013 09:58

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234848)
okay danke es funktioniert

aber wieso muss ich diese in private deklarieren?

möchte nur verstehn was ich da tue?

private Ein private-Element kann nur innerhalb der gleichen Unit verwendet werden. Aus anderen Units ist ein Zugriff nicht möglich.

protected Ein protected-Element ist wie ein private-Element innerhalb der gleichen Unit verwendbar. Darüberhinaus haben alle abgeleiteten Klassen darauf Zugriff, unabhängig davon, in welcher Unit sie sich befinden.

public public-Elemente unterliegen keinen Zugriffsbeschränkungen.

http://www.delphi-treff.de/object-pa...f-auf-objekte/

DeddyH 7. Nov 2013 10:01

AW: Deklaration von Proceduren
 
Wieso unbedingt unter private würde mich auch interessieren. Aber davon ab: eine Methode gehört zu einer Klasse (oder genauer, einer Instanz der Klasse), eine reguläre Routine nicht.
Delphi-Quellcode:
type
  TDings = class
    (* Deklaration der Methode Bums der Klasse TDings *)
    procedure Bums;
  end;

(* Prototyp der regulären Prozedur Wuppdi *)
procedure Wuppdi;

implementation

(* Implementation der Methode, der Klassenname ist zwingend voranzustellen *)
procedure TDings.Bums;
begin
  ...
end;

(* Implementation der Prozedur Wuppdi ohne Klassennamen (welchen denn auch?) *)
procedure Wuppdi;
begin
  ...
end;

Chris211183 7. Nov 2013 10:03

AW: Deklaration von Proceduren
 
Hey Hey, da kann ich ja auch mal was konstruktives beitragen und nicht immer nur Fragen stellen !

prozedur = ohne Rückgabewert und Wiederverwendbar, wobei dann die Funktion mit Rückgabewert ist

beim mehrmaligen Aufruf einer Funktion, liefert diese immer das selbe Ergebnis :!::!::!:

Methoden können die Eigenschaften eines Objektes ändern, Edit: bei mehrmaligen Aufruf einer Methode, unterschiedliche Ergebnisse...

:arrow::arrow::arrow:DeddyH nochmals ganz besonderer Dank :!::!::!::!: :thumb::thumb::thumb::thumb:

baumina 7. Nov 2013 10:05

AW: Deklaration von Proceduren
 
Zitat:

Zitat von DeddyH (Beitrag 1234852)
Wieso unbedingt unter private würde mich auch interessieren...

Wo würdest du es denn hin tun?

DeddyH 7. Nov 2013 10:06

AW: Deklaration von Proceduren
 
Das hängt davon ab, ob ich Zugriff von außen gewähren oder die Methode virtuell bzw. dynamisch deklarieren und damit überschreibbar machen will.

baumina 7. Nov 2013 10:09

AW: Deklaration von Proceduren
 
Ich sag da immer nur: "machs den Anfängern doch net gleich so schwer"

Chris211183 7. Nov 2013 10:11

AW: Deklaration von Proceduren
 
Zitat:

Zitat von baumina (Beitrag 1234856)
Ich sag da immer nur: "machs den Anfängern doch net gleich so schwer"

lernen durch Leiden:wink:

DeddyH 7. Nov 2013 10:12

AW: Deklaration von Proceduren
 
Aus dem Ausgangspost:
Zitat:

Obwohl ich die procedure test im interface teil deklariert habe und sie im implementations unten aufgerufen und bearbeitet habe.
Das macht ja nur dann Sinn, wenn man die Routine/Methode aus anderen Units heraus aufrufen möchte. Da ist private dann eher kontraproduktiv.

Frage95 7. Nov 2013 10:14

AW: Deklaration von Proceduren
 
Danke, hat meinem Verständnis gut geholfen!

DeddyH 7. Nov 2013 10:16

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234862)
Danke, hat meinem Verständnis gut geholfen!

:thumb:, das war ja auch der Zweck der Übung ;)

baumina 7. Nov 2013 10:18

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234828)
Codebeispiel ist bei dieser Frage ja nicht unbedingt nötig kann man sich ja ausmalen:thumb::thumb:

:)

Deddy malt glaub anders als ich :-D:-D:-D

Back2Code 7. Nov 2013 10:21

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Chris211183 (Beitrag 1234853)
beim mehrmaligen Aufruf einer Funktion, liefert diese immer das selbe Ergebnis

Ist so nicht ganz richtig wenn man eine Funktion mit anderen Parametern aufruft kommt natürlich dementsprechend nicht das gleiche Ergebnis raus grade wenns um Berechnungen / Schleifen geht.

Uwe Raabe 7. Nov 2013 11:47

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Frage95 (Beitrag 1234831)
Komm von deinem Ross runter Uwe oder bist du ein vom Himmel gefallener Meister! ^^

Mit "das Dümmste" war ja gar nicht die Frage an sich gemeint, sondern die (nicht mal stillschweigende) Annahme, daß ein Code-Beispiel bei einer Fehlermeldung des Compilers überflüssig sei. Wir sind hier schließlich nicht bei der NSA und haben auch so Zugriff auf deinen Code.

Chris211183 8. Nov 2013 08:57

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Back2Code (Beitrag 1234866)
Zitat:

Zitat von Chris211183 (Beitrag 1234853)
beim mehrmaligen Aufruf einer Funktion, liefert diese immer das selbe Ergebnis

Ist so nicht ganz richtig wenn man eine Funktion mit anderen Parametern aufruft kommt natürlich dementsprechend nicht das gleiche Ergebnis raus grade wenns um Berechnungen / Schleifen geht.

ja da hast Du auch wieder Recht :thumb:

Caps 8. Nov 2013 13:47

AW: Deklaration von Proceduren
 
Zitat:

Zitat von Chris211183 (Beitrag 1235056)
Zitat:

Zitat von Back2Code (Beitrag 1234866)
Zitat:

Zitat von Chris211183 (Beitrag 1234853)
beim mehrmaligen Aufruf einer Funktion, liefert diese immer das selbe Ergebnis

Ist so nicht ganz richtig wenn man eine Funktion mit anderen Parametern aufruft kommt natürlich dementsprechend nicht das gleiche Ergebnis raus grade wenns um Berechnungen / Schleifen geht.

ja da hast Du auch wieder Recht :thumb:

Die Funktion now() liefert sogar mit gleichem Argument immer andere Werte. :-D

lg Caps


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.

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