Autor |
Beitrag |
Georg08
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: Mo 19.07.10 21:27
Hallo,
Wenn ich in Delphi z.B. TFileStream.Create eingebe habe ich 3 verschiedene Prozeduren zur auswahl. Diese erkennt Delphi dann anhand der Anzahl der Parameter (nehme ich an  )
Ich würde gerne auch so etwas Programmieren, dass ich eine Prozedur habe und anhand der Anzahl an Parametern wird dann die jeweilige Aktion ausgeführt...
1. Kann man soetwas in Delphi programmieren
2. Wenn ja dann wie
Danke Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Mo 19.07.2010 um 21:45
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Mo 19.07.10 21:29
Wenn ich dich richtig verstanden habe:
Du schreibst mehrere Funktionen mit dem gleichen Namen aber unterschiedlichen Parametern und setzt hinter jede davon die Direktive overload.
Bsp:
Delphi-Quelltext 1: 2:
| function GetArticle(ID: cardinal; ADeCode: boolean = false): TArtikel; overload; function GetArticle(Num: integer): TArtikel; overload; |
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|
Georg08 
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: Mo 19.07.10 21:35
Also so?:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| type TWaswißich = class(TComponent) Button1: TButton; procedure Click(Sender: TObject); overload; procedure Click (Sender: TObject; Text: String); overload; private public end;
var TWaswißich: TComponent;
implementation
procdure TWaswißich.Click(Sender: TObject); begin (Sender as TButton).Caption:= 'Geklickt'; end; procdure TWaswißich.Click (Sender: TObject; Text: String); begin (Sender as TButton).Caption:= Text; end; |
(Nicht getestet, will nur wissen ob es so geht...)
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Mo 19.07.10 21:37
Ja, das sollte so klappen.
ABER:
Delphi-Quelltext 1: 2:
| var Waswißich: TWaswißich; |
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|
Georg08 
      
Beiträge: 155
Erhaltene Danke: 6
Win XP
Delphi 7.0 Personal
|
Verfasst: Mo 19.07.10 21:40
Naja habs jetzt mal ausprobiert
Fehler war:
Die Prozeduren dürfen nicht im published Teil stehen...
Fehler:
Quelltext 1:
| [Fehler] Unit1.pas(18): Nur eine Methode aus einer Gruppe überladener Methoden darf 'published' sein |
Hier der Funktionierende Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private procedure Klick(Sender: TButton); overload; procedure Klick(Sender: TButton; Text: String); overload; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin Klick(Button3); end;
procedure TForm1.Klick(Sender: TButton); begin Sender.Caption:= 'geklickt'; end;
procedure TForm1.Klick(Sender: TButton; Text: String); begin Sender.Caption:= Text; end;
procedure TForm1.Button2Click(Sender: TObject); begin Klick(Button3, Edit1.Text); end;
end. |
|
|
MaPsTaR
      
Beiträge: 90
Erhaltene Danke: 4
Win XP
Delphi 7 Enterprise
|
Verfasst: Mo 19.07.10 21:48
Dieser Fehler ist bei mir noch nicht aufgetreten.
Liegt vielleicht daran, dass Click als Methode von TForm schon vorhanden ist.
_________________ Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 20.07.10 05:46
published ist für die Eigenschaften und Events, die im Objektinspektor angezeigt werden sollen, wenn eine Komponente installiert wird. Diese müssen natürlich eindeutig sein.
Da Methoden dort ohnehin nicht erscheinen, ist das eigentlich egal, aber da gehören ohnehin keine Methoden hin.
Du hattest die Methoden in die Default-Sichtbarkeit geschrieben, nämlich ganz ohne Sichtbarkeitsangabe. Dort gehören keine eigenen Felder hin, das ist der Bereich, den Delphi für die automatisch angelegten Sachen benutzt. Wenn du selbst etwas einfügst, gehört das explizit unter private, usw.
|
|