![]() |
Function schreiben + übergabe von Parametern
Hallo,
ich habe mir ein kleines Programm geschrieben in dem ich in ein Edit-Feld einen Wert eintragen kann und mir dann die übereinstimmungen in einem Grid angezeigt werden. Da diese Abfrage ingesamt 4x vorkommt, habe ich mir gedacht, dafür eine kleine Function zu schreiben aber irgendwie komm ich damit nicht ganz klar. Ich will in die Function das Datenmodul, die entsprechende Dataset sowie den zu suchenden String übergeben aber ich da immer ne Fehlermeldung: Zitat:
Code:
function TForm12.SearchVers(DM: TForm; DS: TIBDataSet;
SearchText: String): String; begin With DM Do Begin With DS Do Begin Close; Params[0].value:= SearchText; open; end; end; end; |
Re: Function schreiben + übergabe von Parametern
Welche Zeile ist den 916?
...:cat:... |
Re: Function schreiben + übergabe von Parametern
Zeile 916 ist die wo ich versuche das Datenmodul zu übergeben, wenn ich das rausnehme läuft die Function ohne Fehlermeldung durch.
Zitat:
|
Re: Function schreiben + übergabe von Parametern
Moin moin
Zeig doch mal wie du die function aufrufst. schönen Gruß Sam |
Re: Function schreiben + übergabe von Parametern
Aufrufen würde ich die Function dann so, wenn ich sie compiliert bekomme:
Code:
SearchVers(Datenmodul,Dataset, Searchstring);
|
Re: Function schreiben + übergabe von Parametern
Zitat:
|
Re: Function schreiben + übergabe von Parametern
...und überleg mal ob du da nich lieber ne procedure draus machst...diese function liefert ja gar kein Ergebnis zurück
schönen Gruß Sam |
Re: Function schreiben + übergabe von Parametern
:gruebel: Soll die Function doch aber eigentlich auch nicht, sondern soll nur das DataSet in schwung bringen und diese zeigt mir dann das Ergebnis.
Ich habe das mit dem DatenModul jetzt rausgenommen und setze nur noch die parameter für die Dataset und den Searchstring und so geht das auch. Hier mein Ergebnis:
Code:
Und der Aufruf erfolg so:
function TFormMandGeg.SearchVers(DS: TIBDataSet;
SearchText: String): String; begin With DS Do Begin Close; Params[0].value:= SearchText; open; end; end;
Code:
Würde mich jetzt aber trotzdem mal interessieren, wann nimmt man denn am besten eine Procedure und wann eine Function?
SearchVers(DMMa.IBDSVersHPF,MHPFTxt.Text)
|
Re: Function schreiben + übergabe von Parametern
Ob das wirklich so wichtig ist kann ich auch nich sagen :-)
Funktionen liefer eben Ergebnise so wie in der Mathematik auch und Proceduren sind einfach nur Anweisungen. f(x) = x² liefert für meinetwegen für x= 5 das ergebniss 25 aber "Mach die Türe zu" muss das ja nich unbedingt..man kann zwar auch aus "Mach die Tür zu" ne function machen die true/false zurückgibt ob die Türe geschlossen wurde, aber es ist nicht unbedingt nötig...is wohl ne Frage von Stil usw. schönen Gruß Sam |
Re: Function schreiben + übergabe von Parametern
Zitat:
Delphi-Quellcode:
function AddINT (a,b : Integer) : Integer;
begin result := a + b; end; procedure TForm1.Button1Click(Sender: TObject); var c : Integer; begin c := AddINT (5,3); end; |
Re: Function schreiben + übergabe von Parametern
Also packe ich das in meinem Fall am besten in eine Procedure und rufe die dann wieder auf, das wäre dann technisch somit korrekter als in einer Function.
Vielen Dank. |
Re: Function schreiben + übergabe von Parametern
Hai Albi,
wird zwar leicht OT aber ich traue mich mal ;-) Du kannst durchaus eine Function nehmen. Wenn Du z.B. so arbeitest:
Delphi-Quellcode:
Weisst Du sofort wieviele Zeilen deine Suche ergeben haben.
function TFormMandGeg.SearchVers(DS: TIBDataSet;
SearchText: String): Integer; begin With DS Do Begin Close; Params[0].value:= SearchText; open; result := RecordCount; end; end;
Delphi-Quellcode:
Oder so:
ShowMessage ('Es wurden' + IntToSt (SearchVers(DMMa.IBDSVersHPF,MHPFTxt.Text)) + ' Einträge gefunen');
Delphi-Quellcode:
Dann einfach die Funktion auf True abfragen:
function TFormMandGeg.SearchVers(DS: TIBDataSet;
SearchText: String): Boolean; begin With DS Do Begin Close; Params[0].value:= SearchText; open; result := RecordCount > 0; // Wenn mehr als 0 Datensätze gefunden wurden = True end; end;
Delphi-Quellcode:
[Nachtrag]
begin
if not (SearchVers(DMMa.IBDSVersHPF,MHPFTxt.Text)) then begin ShowMessage ('Es wurden keine Einträge gefunden'); end; end; Und es ist bei einer Function ja nicht notwendig das Ergebniss auszuwerten. Du kannst sie also auch wie eine Procedure aufrufen.
Delphi-Quellcode:
begin
SearchVers(DMMa.IBDSVersHPF,MHPFTxt.Text)); end; |
Re: Function schreiben + übergabe von Parametern
Ist jetzt wirklich etwas OT aber Du hast gerade meine gesamte Arbeit zunichte gemacht. Wenn ich das so mache wie Du in dem Bsp. eben gezeigt hast, dann spare ich ja unheimlich viel schreibarbeit. Und der Code wird um einiges kürzer.
Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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