![]() |
AW: Komponenten in eigenen Funktionen verwenden
Danke für die vielen schnellen Antworten :o
Zitat:
Delphi-Quellcode:
Und im Implementationsbereich dann
public
function ReadLog(Logname,searchstr :String;Liste:Tlistbox;HTTPrs:TidHTTP):String; { Public-Deklarationen } end;
Delphi-Quellcode:
Beim compilieren kommt dann aber ein Fehler für den oublic-Bereich
function ReadLog(Logname,searchstr :String;Liste:Tlistbox;HTTPrs:TidHTTP): String;
var A,B:string; checker:integer; begin Assignfile(fileo,Folder+Logname); [...] end; [DCC Fehler] Unit1.pas(68): E2065 Ungenügende Forward- oder External-Deklaration: 'TLogFinderForm.ReadLog' Zitat:
Zitat:
|
AW: Komponenten in eigenen Funktionen verwenden
Unter Implementation dann den Namen der Formularklasse voranstellen
Delphi-Quellcode:
function TForm1.ReadLog(Logname,searchstr :String;Liste:Tlistbox;HTTPrs:TidHTTP): String;
var ... |
AW: Komponenten in eigenen Funktionen verwenden
Zitat:
Bei 8 zu übergebenden Komponenten ist dieser Ansatz fehl am Platz. Die Funktion ist vermutlich dann auch nur noch an dieser einen stelle verwenbar. "Modularisierung" mit Funktionen ist hire unpassend. |
AW: Komponenten in eigenen Funktionen verwenden
Zitat:
1. Dein Vorschlag den Namen vorne dran zuschreiben:
Delphi-Quellcode:
Wenn ich den Aufruf der Funktion dann durch
function TLogFinderForm.ReadLog(Logname,searchstr :String;Liste:Tlistbox;HTTPrs:TidHTTP): String;
var A,B:string; checker:integer; begin [...] end;
Delphi-Quellcode:
tätige bekomme ich den Fehler:
ReadLog(SR.Name,Filter,LogBox,HTTPrs);
[DCC Fehler] Unit1.pas(167): E2003 Undeklarierter Bezeichner: 'ReadLog' Habe dann auch beim Aufruf den Namen der Formularklassen davor geschrieben. Sieht so aus, Funktionsaufruf:
Delphi-Quellcode:
Folgender Fehler kommt dann beim Compiler..
TLogFinderForm.ReadLog(SR.Name,Filter,LogBox,HTTPrs);
[DCC Fehler] Unit1.pas(167): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt Da wusste ich dann nicht weiter, hatte Delphi leider nur im Abi und das nicht zu umfangreich..versuchs mir neben anderen Sprachen wieder etwas beizubringen also nicht böse sein :-D |
AW: Komponenten in eigenen Funktionen verwenden
Beim Aufruf natürlich weglassen
|
AW: Komponenten in eigenen Funktionen verwenden
Um die ganzen "Fachbegriffe" noch einmal zu erklären: wenn es sich um eine nützliche allgemein verwendbare Funktion handeln soll, kann man diese modularisieren (dh. in ein eigenständiges Modul, z.B. eine Unit auslagern). Das könnte so aussehen (sinnfreier Code):
Delphi-Quellcode:
Dieser Prozedur könnte man nun 2 Zahlen und alle möglichen Nachfahren von TStrings (TListBox.Items, TComboBox.Items, TStringlist etc.) übergeben. Ist die Routine aber so speziell, dass sie nur in einem bestimmten Formular Sinn macht, sollte man sie als Methode deklarieren und hat dann Zugriff auf alle anderen Methoden und Eigenschaften des Formulars.
procedure ListNumbers(MinNumber, MaxNumber: integer; List: TStrings);
var i: integer; begin if Assigned(List) then begin List.BeginUpdate; try List.Clear; for i := MinNumber to MaxNumber do List.Add(IntToStr(i)); finally List.EndUpdate; end; end; end;
Delphi-Quellcode:
type
TDeinForm = class(TForm) ... private procedure Wuppdi; ... end; ... implementation ... procedure TDeinForm.Wuppdi; //nicht den Klassennamen vergessen, es ist ja eine Methode der Klasse begin //Code end; |
AW: Komponenten in eigenen Funktionen verwenden
Zitat:
->[DCC Fehler] Unit1.pas(167): E2003 Undeklarierter Bezeichner: 'ReadLog' Wie bekomme ich dann den Fehler weg? |
AW: Komponenten in eigenen Funktionen verwenden
Von wo rufst du es den auf?
|
AW: Komponenten in eigenen Funktionen verwenden
Zitat:
In einer anderen Funktion, die nicht in public steht weil diese nur was berechnet rufe ich die andere Funktion auf. Erst kommt: TLogFinderForm.ReadLog Und unter der Funktion dann eine andere in welcher die obere aufgerufen werden soll |
AW: Komponenten in eigenen Funktionen verwenden
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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