AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

functions aufruf

Ein Thema von Walter Landwehr · begonnen am 1. Jun 2013 · letzter Beitrag vom 1. Jun 2013
Antwort Antwort
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
380 Beiträge
 
Delphi 10.4 Sydney
 
#1

functions aufruf

  Alt 1. Jun 2013, 09:50
Hallo,

ich habe folgende function:


Delphi-Quellcode:
function TModul.GetKontoBalance(Anfang, Ende: String):Currency;
var Jahr,i : Integer;
    Kontonummer : String;
begin
  BuchungenQry.Close;
  BuchungenQry.SQL.Clear;
    Kontonummer := EmptyStr;
  for i := 0 to dmMain.Memo1.Lines.Count - 1 do
  begin
     Kontonummer := Kontonummer + '''' + dmMain.Memo1.Lines[i] + '''' + ',';
  end;
  Kontonummer := Copy(Kontonummer, 0, Length(Kontonummer) - 1);[CODE][/CODE]

  BuchungenQry.SQL.Add('SELECT SUM(B.Soll) as SollBetrag, SUM(B.Haben) as HabenBetrag ');
  BuchungenQry.SQL.Add('FROM Konto K INNER JOIN ');
  BuchungenQry.SQL.Add('Buchung B ON B.DVKontonummer = K.DVKontonummer INNER JOIN ');
  BuchungenQry.SQL.Add('Beleg BL ON BL.DVBelegnummer = B.DVBelegnummer ');
  BuchungenQry.SQL.Add('WHERE (BL.Buchungsperiode Between :Anfang and :Ende) ');
  BuchungenQry.SQL.Add(Format('and BL.Belegart in (%s, %s)',[QuotedStr('ER'),QuotedStr('EG')]));
  BuchungenQry.SQL.Add(Format('and K.Kontonummer in (%s) ',[Kontonummer]));
  BuchungenQry.SQL.Add(Format('and B.InfoGegenkonto in (%s, %s)',[QuotedStr('3425'),QuotedStr('3410')]));
  BuchungenQry.Parameters.ParamByName('Anfang').Value := Anfang;
  BuchungenQry.Parameters.ParamByName('Ende').Value := Ende;
  BuchungenQry.Open;
  Result := BuchungenQry.FieldByName('HabenBetrag').AsCurrency - BuchungenQry.FieldByName('SollBetrag').AsCurrency;
  BuchungenQry.Close;
end;
den Aufruf mache ich so:
Delphi-Quellcode:
 Anfang := '01-01-2012';
 Ende := '31-12-2012';
 SuVorjahr.Value := TModul.GetKontoBalance(Anfang, Ende);

es kommt die Meldung:
[DCC Fehler] Einkauf.pas(97): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt

Was mache ich hier falsch?

Walter
Walter Landwehr
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: functions aufruf

  Alt 1. Jun 2013, 10:10
Moin...
 SuVorjahr.Value := TModul.GetKontoBalance(Anfang, Ende); Du mußt mit einer Instanz von TModul arbeiten. Diese muß erzeugt sein.
Delphi-Quellcode:
MyModul:= TModul.Create;
.
.
SuVorjahr.Value := MyModul.GetKontoBalance(Anfang, Ende);
Wenn die Funktion eine class function wäre würde das funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: functions aufruf

  Alt 1. Jun 2013, 10:17
... oder eben als class function deklarieren, ist aber bestimmt nicht so gewollt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
380 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: functions aufruf

  Alt 1. Jun 2013, 11:02
Hm vestehe ich nicht ganz.

MyModul:= TModul.Create; Wo wird MyModul deklariert?
Walter Landwehr
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: functions aufruf

  Alt 1. Jun 2013, 11:03
In der aufrufenden Methode:
Delphi-Quellcode:
var
  MyModul: TModul;
begin
  MyModul:= TModul.Create;
  try
    ...
    Anfang := '01-01-2012';
    Ende := '31-12-2012';
    SuVorjahr.Value := MyModul.GetKontoBalance(Anfang, Ende);
  finally
    MyModul.Free;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
380 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: functions aufruf

  Alt 1. Jun 2013, 11:14
MyModul:= TModul.Create;
Kommt Meldung :
[DCC Fehler] Einkauf.pas(94): E2035 Nicht genügend wirkliche Parameter
Walter Landwehr
  Mit Zitat antworten Zitat
Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
380 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: functions aufruf

  Alt 1. Jun 2013, 11:17
MyModul:= TModul.Create(Self);

so scheint es zu funktionieren.

zunächst mal Danke an alle.

Walter
Walter Landwehr
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: functions aufruf

  Alt 1. Jun 2013, 12:17
TModul wird doch sicher ein Datenmodul sein, oder?
Dann hat Delphi automatisch schon eine globale Variable angelegt:
Delphi-Quellcode:
type
TModul = Class(TDataModule)
....
end;

var
  Modul : TModul; // <===
Wahrscheinlich wird das Datenmodul "Modul" beim Start schon automatisch erzeugt.
Das lässt sich in den Projektoptionen einstellen.

Bei Datenmodulen hat man in der Regel nur eine Instanz.
Daher:
Delphi-Quellcode:
begin
    ...
    Anfang := '01-01-2012';
    Ende := '31-12-2012';
    SuVorjahr.Value := Modul.GetKontoBalance(Anfang, Ende);
end;
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 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