![]() |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
Hallo danku,
im Code von turboPASCAL (Beitrag #8) steht bereits die Lösung deines Problems. Bei mehreren ausgewählten Dateien erfolgt der Zugriff nicht über OpenDialog.FileName sondern über das Array OpenDialog.Files[]. In deinem Beispiel sieht das dann so aus:
Delphi-Quellcode:
Gruß Hawkeye
for i := 0 to OpenDialog1.Files.Count - 1 do
sgfiles.cells[0, 1 + i]:= OpenDialog1.Files[i]; |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
jo das könnt so passen. :roll:
auf das [i] hätte ich auch kommen können... :wall: zumal ich schon mal das dastehen hatte.. ich mach jetzt mal jetzt mal die einträge abhängig von der zeile beim einfügen :coder2: Edit:
Delphi-Quellcode:
Natürlich musste wieder ein Extremfall passieren...
//Füllen der StringGrid mit Opendialog1Daten
for i := 0 to OpenDialog1.Files.Count - 1 do sgfiles.cells[0,1 + i]:= OpenDialog1.Files[i]; if OpenDialog1.Files.Count >= sgfiles.rowcount then sgfiles.RowCount:=sgfiles.RowCount+1; end; end; Wenn man mehrere Dateien im opendialog wählt, geht das ja, aber so bald man dateien aus der 2.spalte im dialog auswählt gibts probs... Wobei ich gerade merkte das (rowcount=2) sobald mehr als wieso? |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
kann mir da einer helfen?
|
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
Hallo danku,
warum erhöhst du die Zeilenzahl des Grids bei jedem Durchlauf? Du kennst doch die Anzahl der ausgewählten Dateien und kannst somit die Zeilenzahl vor der Schleife setzen:
Delphi-Quellcode:
PS: Pushen von Beiträgen frühestens nach 24 Stunden :wink:
// 1 Headerzeile + 1 Zeile pro ausgewählter Datei
sgfiles.RowCount := OpenDialog1.Files.Count + 1; // Füllen des StringGrids mit den Namen der ausgewählten Dateien for i := 0 to OpenDialog1.Files.Count - 1 do sgfiles.Cells[0, 1 + i] := OpenDialog1.Files[i]; //Edit: ich sehe gerade, daß ein Logikfehler in deinem Code vorliegt. Die FOR-Schleife überträgt nur alle Dateien, danach erhöhst du evtl. die Zeilenzahl im Grid um 1. Die Einrückung läßt vermuten, daß ein BEGIN fehlt. Die Zeilenzahl solltest du trotzdem vor der Schleife setzen. Gruß Hawkeye |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
es geht ohne dein "begin"
Delphi-Quellcode:
//Füllen der StringGrid mit Opendialog1Daten
i:=opendialog1.files.count-1; sgfiles.RowCount := OpenDialog1.Files.Count + 1; for i := 0 to OpenDialog1.Files.Count - 1 do begin sgfiles.cells[0,1 + i]:= OpenDialog1.Files[i]; end; inc(i); |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
Das BEGIN hätte auch nur deinen alten Code korrigiert, der neue ist auf jeden Fall besser. Die erst und die letzte Zeile kannst/solltest du allerdings noch ersatzlos streichen. Die erste Zuweisung zur Variablen i wird durch die FOR-Schleife sowieso überschrieben, beim "Inc (i)" greifst du nach der FOR-Schleife auf die Schleifenvariable zu. Deren Inhalt ist aber hinter der Schleife undefiniert.
Gruß Hawkeye |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
wie kann ich erreichen das die komplette stringgrid "durchcompiliert" wird und die leerzeichen gelöscht werden?
Delphi-Quellcode:
problem1:
if rgmenue.ItemIndex = 0
then begin PROBLEM 1 for i:= 0 to 1000 do //Komplett search_text in Zelle gelöscht ->beschleunigt abschnittsw. l. begin Position := 1; S := sgfiles.Cells[0,1]; for zaehlen := 0 to length(S) do //search_text abschnittsweise löschen begin //Position des Search_Text ('_') Position := GetPosNumX(Search_Text, S, Position); //Löscht diese Stelle Delete(S, Position, length(Search_Text)); PROBLEM 2 end; sgfiles.Cells[0,1]:= S; inc(a,i); end; ///// Löschen for i:= 0 to 1000 do begin Position := 1; S := sgfiles.Cells[0,1]; for zaehlen := 0 to length(S) do begin Position := GetPosNumX(Search_Text, S, Position); Delete(S, Position, length(Search_Text)); end; sgfiles.Cells[0,1]:= S; inc(a,i); end; Es wird jeweils zuerst nur in der Zelle nach dem (Search_Text = '_') gesucht und dieser gelöscht. aber das passiert nur abschnittsweise. und nicht in der gesamten zelle komplett. problem2: wäre es besser eine replace-prozedur zur schreiben, um '_' durch '' zu ersetzen oder doch lieber bei meiner jetzigen variante und dann noch nach dem löschen ein leerzeichen dazuzufügen? |
Re: Mit OpenDialog mehrere Dateien gleichzeitig hinzufügen
Der Thread hat den Titel:
Zitat:
Zitat:
Mach dazu bitte einen eigenen neuen Thread auf. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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