Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi procedure läuft nicht! (https://www.delphipraxis.net/62390-procedure-laeuft-nicht.html)

SteffenG 3. Feb 2006 19:33


procedure läuft nicht!
 
Hallo, ich habe folgendes Problem:
Ich wollte eine procedure erstellen, damit ich das Programm ein wenig verkleinern und dadurch übersichtlicher machen kann!

Wenn ich jetzt aber den funktionierenden Quelltext in eine procedure packe, meint er z.B. plötzlich:
Undefinierter Bezeichner: 'Listbox1' obwohl diese vorhanden ist. Ansonsten erkennt er noch die anderen Komponenten nicht(Listbox2 und table2(Datenbank), und schreibt haufenweise, dass "Operator oder Semikolon fehlt". Der gleiche Abschnitt(ausgenommen halt die variablen in der Kopfzeile) hat aber in "Button1.Click" ohne Probleme funktioniert. Hier der Quelltext:

Delphi-Quellcode:
procedure modell(index: Integer; var firma: String);
var modell, marke: String;
    i, anzahl: Integer;
begin
  If (Listbox1.Items.Strings[Listbox1.ItemIndex] = firma) AND (RadioGroup1.ItemIndex = index)
  then
    begin
      anzahl := table2.RecordCount;
      for i := 1 to anzahl do
        begin
          modell := table2.FieldByName('Mofa').AsString;
          marke := table2.FieldByName('Marke').AsString;
          if (modell <> '') AND (marke = firma)
          then Listbox2.Items.add(modell);
          table2.next;
        end;
    end;
end;
Der ganze Quelltext greift auf ne normale Datenbank zu.

Es kann sein, dass die Lösung ganz simpel ist, aber ich befasse mich noch nicht solange mit Delphi. Ich hoffe ihr könnt mir helfen!

mkinzler 3. Feb 2006 19:36

Re: procedure läuft nicht!
 
Mache mal aus der procedure eine Methode der Formularklasse oder erweitere die Kompoentenzugriffe um die Formularklassenbezeichnung z.B.
Listbox1.Items.Strings[Listbox1.ItemIndex] ==> Form1.Listbox1.Items.Strings[Listbox1.ItemIndex]

SteffenG 3. Feb 2006 19:41

Re: procedure läuft nicht!
 
Ok, die beiden Fehlermeldungen bin ich dadurch losgeworden, aber er erkennt table2 noch immer nicht!
Er scheint mit all den Zeilen Probleme zu haben, wo es um das Arbeiten mit der Datenbank geht...

mkinzler 3. Feb 2006 19:43

Re: procedure läuft nicht!
 
Wo ist Table2 definiert?

SteffenG 3. Feb 2006 19:45

Re: procedure läuft nicht!
 
TTable2 greift auf ne Datenbank zu!

Außerdem läuft das ganze ja, wenn ich es in Button1.Click kopiere.

mkinzler 3. Feb 2006 19:47

Re: procedure läuft nicht!
 
Ja aber in welcher Unit/welchem Formular ist diese Kompoenente definiert?

SteffenG 3. Feb 2006 19:55

Re: procedure läuft nicht!
 
Ups, jetzt weiss ich was du meinst :)
Den hier hatte ich völlig vergessen:

Delphi-Quellcode:
procedure modell(index: Integer; var firma: String[b]; table2:ttable[/b]);
aber jetzt habe ich ein anderes Problem:

wenn ich die procedure aufrufe, wie kann ich die Variable(String) "firma" da reinschreiben:

Delphi-Quellcode:
modell(1, 'firma');
Weil so macht er es nicht, ohne die '' auch net!

Ich weiss, ich bin ein wenig neu in der Welt des Programmierens... Aber wenn ich jetzt Grundlagen durchstöbere, was ich auch eigentlich schon gemacht habe, werde ich die Lösung wohl eher erst nach einigen Stunden finden, wenn überhaupt!

mkinzler 3. Feb 2006 20:02

Re: procedure läuft nicht!
 
Du übergibst sie als Referenz: Ist sie zu diesem Zeitpunkt schon geöffnet?
Kannst du in der IDE auf die Daten zugreifen?

Die Schleife würde ich wie folgt ändern
Delphi-Quellcode:
Table2.First;
while not Table2.eof() do
begin
      modell := table2.FieldByName('Mofa').AsString;
      marke := table2.FieldByName('Marke').AsString;
      if (modell <> '') AND (marke = firma) then
          Listbox2.Items.add(modell);
      table2.next;
end;
Achtung nenne die lokale Variable Modell besser um, da die Procedur schon so heißt, so gehts du möglichen Problemen aus dem Weg.

Christian Seehase 3. Feb 2006 20:03

Re: procedure läuft nicht!
 
Moin Steffen,

eine Bitte:
Wir haben hier die Regel, dass für jede Frage ein Thread erstellt werden muss, damit später die Suchfunktion auch sinnvoll einsetzbar ist, und nicht in einem Thread alles durcheinander geht.

Erstelle also bitte für die neue Frage einen neuen Thread.

Danke.

SteffenG 4. Feb 2006 00:49

Re: procedure läuft nicht!
 
Zitat:

Zitat von Christian Seehase
Moin Steffen,

eine Bitte:
Wir haben hier die Regel, dass für jede Frage ein Thread erstellt werden muss, damit später die Suchfunktion auch sinnvoll einsetzbar ist, und nicht in einem Thread alles durcheinander geht.

Erstelle also bitte für die neue Frage einen neuen Thread.

Danke.

Sorry,
es war halt so, dass ich gerade das eine Problem gelöst hatte, und darauf gleich ein neues Auftrat. Ich gebe zu, ich habe da nicht wirklich drüber nachgedacht, und gleich die nächste Frage in den gleichen Thread hineingeschrieben. Natürlich bringt diese Regel, wenn sich daran jeder dran hällt, bei dem Suchen nach bestimmten Problemen einen Großen Vorteil!

Ich werde mich demnächst daran halten!

Ansonsten sind die beiden Fragen, die ich gestellt hatte auch geklärt:
In der Kopfzeile musste ich 'firma' als Konstante vereinbaren:

Delphi-Quellcode:
procedure modell(index: Integer; const firma: String; table2:ttable);
Dann konnte ich die procedure folgendermaßen aufrufen:

Delphi-Quellcode:
modell(1, 'Zündapp', table2);


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 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