Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Problem: Ereigniszähler in Listbox und Caption


omega1979 - Sa 08.05.04 14:22
Titel: Problem: Ereigniszähler in Listbox und Caption
Hallo zusammen!

Habe folgendes Problem:

In einer Listbox sollen Ereignisse (Art) angezeigt werden, wenn z.B. geklickt wird und als Caption die Anzahl (Summe) der Ereignisse!
Bislang habe ich folgendes programmiert; es kommt allerdings die Meldung, daß zuviele Paramter vorhanden seien:


Delphi-Quelltext
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:
procedure TForm1.formclick(Sender: TObject);
  procedure up_click;
  const i:integer=0;
  begin
    inc(i);
    Ausgabe('onclick',i);    <---- an dieser Stelle muckiert, wo ja eigentlich die Prozedur an eine andere übergeben werden soll!!!
  end;
begin
caption:='onclick';
end;


procedure Ausgabe(Ereignis,ereignis_alt: Stringvar anzahl,zaehler:integer);
begin
inc (zaehler);
zaehler:=strtoint(inttostr(0));
form1.caption:=inttostr(zaehler);
 with form1.listbox1.items do
  if ereignis <> ereignis_alt then
  add('onclick');
  {else Strings[Count-1]:=ereignis_alt;}

{  if count=25 then clear;}
{const i:integer=0;
begin
inc(i);
Ausgabe('onclick',i);
end;}

end.


Danke im Voraus!

Moderiert von user profile iconPeter Lustig (14:26, 08.05.2004): Delphi-Tags hinzugefügt


GSE - Sa 08.05.04 15:00

Haut mich wenns falsch ist, aber deine Prozedur ist mit

Delphi-Quelltext
1:
procedure Ausgabe(Ereignis,ereignis_alt: Stringvar anzahl,zaehler:integer);                    

definiert du übergibst aber nur 2 Parameter?

mfg
GSE


Jetstream - So 09.05.04 22:12

Ich wunder mich grad über die erste zeile der prozedur
Bei dir steht:

procedure Ausgabe(Ereignis,ereignis_alt: String; var anzahl,zaehler:integer);

wie wärs damit:

procedure Ausgabe(Ereignis,ereignis_alt: String;) var anzahl,zaehler:integer;


GSE - So 09.05.04 22:24

Jetstream hat folgendes geschrieben:
Ich wunder mich grad über die erste zeile der prozedur
Hab ich das nicht gesagt? (gemeint hab ichs auf jeden Fall)

mfg
GSE


omega1979 - Di 11.05.04 18:19

Also ich habe das jetzt mal so ausprobiert, wie ihr das beschrieben habt. Er kommt aber trotzdem mit 'ner Fehlermeldung und zwar an der schon beschriebenen Stelle!!!

[Fehler] Projekt_Listbox2.pas(39): Zu viele Parameter

Laut Delphi Hilfe sollte vorherige Variante aber auch gehen.
Probleme hat er immer mit den Paramteren!


Christian S. - Di 11.05.04 18:23

Man kann Dir nicht helfen, wenn Du nicht zeigst, wie Dein Quelltext jetzt aussieht.


omega1979 - Di 11.05.04 18:27

Der Quelltext steht doch ganz oben im ersten Posting!!!

Aber hier nochmal:


Delphi-Quelltext
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:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
unit Projekt_Listbox2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure formclick(Sender: TObject);
    procedure ausgabe();
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
close
end;

procedure TForm1.formclick(Sender: TObject);
procedure up_click;
const i:integer=0;
begin
inc(i);
Ausgabe('formclick',i);
end;
begin
caption:='onclick';
end;


procedure Ausgabe(Ereignis,ereignis_alt: String;);
var anzahl,zaehler:integer);
begin
inc (zaehler);
zaehler:=strtoint(inttostr(0));
form1.caption:=inttostr(zaehler);
 with form1.listbox1.items do
  if ereignis <> ereignis_alt then
  add('onclick');
  {else Strings[Count-1]:=ereignis_alt;}

{  if count=25 then clear;}
{const i:integer=0;
begin
inc(i);
Ausgabe('onclick',i);
end;}

end.


Moderiert von user profile iconPeter Lustig: Delphi-Tags


Christian S. - Di 11.05.04 18:32

Wie kann das denn der selbe Quelltext sein, wenn Du die Anregungen, welche Du hier bekommen hast, verarbeitet hast :?:


omega1979 - Di 11.05.04 18:37

Ich weiß nicht, ob das jetzt Wortspielerei ist. Fakt ist eins:

Die eine Variante, die vorgeschlagen wurde, daß die abschließende Klammer noch gesetzt wurde, hat nicht den Erfolg gebracht.
(Unabhängig davon kann lt. Delphi-Hilfe dies auch so in den Quelltext geschrieben werden.) Ergo zeigt er mir in beiden Fällen diesselbe Fehlermeldung an!


Christian S. - Di 11.05.04 18:47

Aber Du hättest doch auch mal selbst probieren können!

Die Aussagen der beiden ersten Leute, die Dir geantwortet haben, sind ja im Kern richtig: Du kannst keine Porzedur, die vier Parameter erwartet, mit zweien starten! Das wäre so, als würdest Du bei Deiner Handy-PIN nur zwei von vier Ziffern eingeben.


raziel - Di 11.05.04 19:39

kann man aber! aber nur wenn man im prozedurheader standardwerte definiert.
da du aber parameter übergeben willst, die mit var gekennzeichnet werden, dann geht das natürlich nicht!
warum beidir immer noch ein fehler kommt?
weil da ein paar mächtig dicke hämmer drin sin.

1. i ist eine constante und gleich 0. inc(i) müsste schon eine zugriffsfehler oder sowas in der art geben!!
2. integer <> string. du übergibst einen parameter als integer, der eigentlich ein string sein müsste!!

raziel