![]() |
Problem mit DELETE ???
Moin, zusammen.
Kann mir bitte dies mal jemand erklären ?
Code:
Fehlermeldung :
var
n, l, l2, i, r, sn : Byte; p : Integer; S : String; S2 : String; IndexList : TStringlist; ... with MediaListView.Items.Add do begin Caption := SearchList[2].Strings[n]; SubItems.Add(SearchList[2].Strings[n]); SubItems.Add(SearchList[5].Strings[n]); SubItems.Add(SearchList[1].Strings[n]); S := MediaList[1].Strings[n]; p := Pos(Chr(19), S); Delete(S, 1, p); // ID <-------(950) p := Pos(Chr(19), S); S := Copy(S, 1, p); // FileName Delete(S, 1, p); <--------------(953) S := Copy(S, 1, Length(S)); // ext Daten SubItems.Add(S); SubItems.Add(AddZero(IntToStr(i), 6)); end; [Error] uMain.pas(950): Too many actual parameters [Error] uMain.pas(953): Too many actual parameters ich steh' ziemlich auf dem Schlauch . . . :gruebel::gruebel::gruebel::gruebel::gruebel: |
AW: Problem mit DELETE ???
Kick mal das
Delphi-Quellcode:
raus!
with
|
AW: Problem mit DELETE ???
Zitat:
... die Geschichte mit dem Wald und den Bäumen . . .:oops: |
AW: Problem mit DELETE ???
oder schreib vor das Delete mal System.
Durch das With weiß der Compiler nicht, dass er hier nicht das Delete von MediaListView.Items nehmen soll, sondern die Prozedur Delete aus System. Beim Delete meint er, so wie es ist, er solle ein Element aus MediaListView.Items löschen. Und da ist die Parameterzahl halt 'ne andere. |
AW: Problem mit DELETE ???
hab's jetzt so geändert - ist auch etwas übersichtlicher
Code:
S := MediaList[1].Strings[n];
p := Pos(Chr(19), S); Delete(S, 1, p); // ID p := Pos(Chr(19), S); S2 := Copy(S, 1, p-1); // FileName Delete(S, 1, p); S := Copy(S, 1, Length(S)); // ext Daten S2 := ExtractFileExt(S2); // File Extension with MediaListView.Items.Add do begin Caption := SearchList[2].Strings[n]; SubItems.Add(SearchList[3].Strings[n]); SubItems.Add(SearchList[5].Strings[n]); SubItems.Add(SearchList[1].Strings[n]); SubItems.Add(S); SubItems.Add(AddZero(IntToStr(i), 6)); SubItems.Add(S2); end; |
AW: Problem mit DELETE ???
Zitat:
Delphi-Quellcode:
, was ein
TListItem
Delphi-Quellcode:
bereitstellt. Schöner und weniger anfällig für solche Fehler wäre aber:
Delete
Delphi-Quellcode:
var
newItem: TListItem; ... newItem := MediaListView.Items.Add; newItem.Caption := SearchList[2].Strings[n]; newItem.SubItems.Add(SearchList[3].Strings[n]); newItem.SubItems.Add(SearchList[5].Strings[n]); newItem.SubItems.Add(SearchList[1].Strings[n]); newItem.SubItems.Add(S); newItem.SubItems.Add(AddZero(IntToStr(i), 6)); newItem.SubItems.Add(S2); |
AW: Problem mit DELETE ???
Mach Dir selber einen Gefallen und gewöhne Dir das with ab.
Gerade in grossen Projekten kannst Du damit fürchterlich auf die Nase fallen bei Änderungen in den darunterlegenden Klassen. Das Problem ist das der Code wahrscheinlich trotzdem kompiliert aber dann erst beim Kunden knallt. Wir machen so etwas grundsätzlich nur noch mit hilfsvariablen. also ungefähr:
Delphi-Quellcode:
var
litem : TlistItem; begin litem := MediaListView.Items.Add; begin litem.Caption := SearchList[2].Strings[n]; litem.SubItems.Add(SearchList[3].Strings[n]); litem.SubItems.Add(SearchList[5].Strings[n]); litem.SubItems.Add(SearchList[1].Strings[n]); litem.SubItems.Add(S); litem.SubItems.Add(AddZero(IntToStr(i), 6)); litem.SubItems.Add(S2); end; end, |
AW: Problem mit DELETE ???
danke für die Tipps :thumb:
|
AW: Problem mit DELETE ???
Moin...:P
...wenn wir schon bei Tipps sind. :zwinker:
Delphi-Quellcode:
... was hindert dich eigentlich daran den Variablen sprechende Namen zu geben? Nix ist schlimmer als bei fremden Code die Zuordnungen der Variablen zu erkennen. :roll:
var
n, l, l2, i, r, sn : Byte; p : Integer; S : String; S2 : String; IndexList : TStringlist; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 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