Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Fehlermeldung: "Die Typen der tatsächlichen und formale


green-sound - Mi 23.04.03 16:08
Titel: Fehlermeldung: "Die Typen der tatsächlichen und formale
Hallo alle zusammen

ich wil mit dem hier dargestellten Quellcode 2 Proceduren aufrufen

Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ListDirs('c:\Windows\',ListBox1.Items);   //hier
 ListFiles('c:\Windows\*.*',ListBox2.Items); //und hier
end;

und bekomme folgende Fehlermeldung die ich aber nicht verstehe!
Zitat:
Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen

kann mir jemand sagen was das zu bedeuten hatt?

Moderiert von user profile iconTino: Titel geändert & Topic verschoben.


neojones - Mi 23.04.03 16:12

Tja, dann schreib doch mal die Deklaration der Prozeduren hier hin...


green-sound - Mi 23.04.03 16:19

Das ganze hab ich auf folgender Seite gefunden!

http://www.faqsen.de/delphi/faq.jsp?ID=505648564850495048555050


neojones - Mi 23.04.03 17:56

Und Du hast die Prozeduren in Deinem Programm richtig eingebunden? Poste mal DEINEN Quelltext!!


wulfskin - Mi 23.04.03 19:43

Hallo Grüne Musik!

Das liegt daran, dass in den Prozeduren TStringListen verwendet werden, aber du TStrings übergibst.
Entweder du schreibst die Prozedur um, indem du TStringList durch TStrings ersetzt, oder du machst ein Typ-Cast (oder wie das heisst). Ausserdem werden da Variablen verlangt und keine Eigenschaften. So sollte es gehen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var
  Strings: TStringList;
begin
  Strings := TStringList.Create;
  try
    Strings.Assign(ListBox1.Items);
    ListDirs('c:\Windows\', Strings);
    ListBox1.Items.Assign(Strings);
  finally
    Strings.Free;
  end;
end;
Gruß wulfskin!


Tino - Do 24.04.03 11:02

Wie wulfskin schon gesagt hat würde ich den Procedure umschreiben. Ich würde allerdings den tStrings Type nehmen:

Quelltext
1:
Procedure ListFiles(const FilePath: String; var ListBox: TStrings);                    

Gruß
Tino


wulfskin - Do 24.04.03 13:29

Stimmt, es waren TStrings und nicht TItems. Danke Tino ;)!


Tino - Do 24.04.03 14:28

wulfskin hat folgendes geschrieben:
Danke Tino ;)!

Immer gerne :-)

Gruß
Tino