Autor |
Beitrag |
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 09.08.06 03:40
ich verwende die normale opendialog komponente, kann mir jemand sagen, wie ich mehrere Dateien auf einmal in dem Dialog markieren, somit auch öffnen kann?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 09.08.06 03:56
Im Options-Property muss ofMultiselect gesetzt werden. Die gewählten Dateinamen befinden sich nach dem Execute in der TStrings-Liste Opendialog.Files
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 09.08.06 09:49
Ok vielen Dank jetzt noch eine weitere Frage zu dem dialog: Hat die opendialog komponente auch eine Eigenschaft, mit deren Hilfe man den geföffneten dateinamen herausfinden kann, ohne pfad also? Oder muss man eine entsprechende Routine selbst schreiben?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 09.08.06 09:52
OpenDialog liefert die kompletten Namen zurück. Will man nur den Namen ohne den Pfad haben, dann hilft die Funktion ExtractFilename.
_________________ We are, we were and will not be.
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 09.08.06 10:01
Jo danke habe ich auch gerade gefunden, jetzt ist bloss noch die frage, ob ich die Dateiendung auch noch wegbekomme? Notfalls müsste man halt eine eigene Routine schreiben oder?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Delphi_Apostel
Hält's aus hier
Beiträge: 5
|
Verfasst: Mi 09.08.06 10:31
Hallo,
das geht ganz einfach:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var pfad, name, ext, neuerName: string; ... pfad := ExtractFilePath(Application.ExeName); name := ExtractFileName(Application.ExeName); ext := ExtractFileExt(Application.ExeName); neuerName := ChangeFileExt(Application.ExeName, '.tmp'); |
MfG
Delphi-Apostel
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 14:14
Martok hat folgendes geschrieben: | Im Options-Property muss ofMultiselect gesetzt werden. Die gewählten Dateinamen befinden sich nach dem Execute in der TStrings-Liste Opendialog.Files |
Gib es auch noch eine Eigenschaft, in der die Anzahl der ausgewählten Dateien steht?
//Edit: Oh klar ist ja ne Tstringlist, also count.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Do 10.08.06 14:16
bin mir nicht sicher, aber würde mal auf
Delphi-Quelltext 1:
| opendialog.files.count |
tippen...
korrigiert mich, wenn falsch 
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 14:32
Also ich habe folgendes Problem: in einer Listbox soll mit einem Klick auf einen Hinzufügen Button Dateien hinzugefügt werden. Hierbei wird ein Opendialog geföffnet und der Anwender kann schon einmal ein paar Dateien auswählen. In der Listbox soll jedoch nur der Dateiname angezeigt werden, nicht der ganze Pfad aus Opendialog.file.
Zusätzlich gibt es noch einen Button der Dateien aus der Listbox entfernt. Erst wenn man auf einen weiteren 3. Button "Weiter" drückt, so werden die dateien aus der Listbox geladen.
Jetzt komme ich einfach nicht weiter.
Das habe ich schon(praktisch nichts):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm7.Button2Click(Sender: TObject); var temp:Tstrings; begin if (opendialog1.Execute)then begin temp:=opendialog1.Files; Listbox1.Items.AddStrings(opendialog1.Files); end; end; |
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Do 10.08.06 14:39
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 14:41
Ok habe das öffnen jetzt so in den Griff bekommen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if (opendialog1.Execute)then begin temp:=opendialog1.Files; for i:=0 to opendialog1.Files.Count-1 do Listbox1.Items.Add(extractFileName(opendialog1.Files.Strings[i])); end;</span> |
Das Löschen muss ich jetzt halt noch irgendwie schaffen. Letztendlich muss ich einfach eine Stringlist, in der alle Pfade der einträge der Listbox gespeichert sind, an meine Ladefunktion übergeben.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 14:54
Das ganze ist ja ein Dialog und wenn ich auf weiter klick, werden die Dateinamen, welche sich in der listbox befinden einfach geladen.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 15:31
Wenn ich temp.AddStrings(opendialog1.Files); aufrufe kommt eine FEhlermeldung, obwohl temp vom typ Tstrings ist.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Do 10.08.06 16:27
klezmor hat folgendes geschrieben: | kommt eine FEhlermeldung |
Und wie lautet die Meldung?
_________________ Ein Nutzer der Ecke
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 16:34
Ich hatte Temp nicht instanziert, und somit gabs ne Speicherverletzung, einziges problem, das ich noch habe, ist folgendes: Wenn ich ein Element aus der listbox entferne, soll das nächste markiert werden.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Do 10.08.06 16:36
Mach Dich doch mal mit den Eigenschaften der Listbox vertraut. Sprich: F1 drücken. Die meisten Fragen hier hätte man so selbst lösen können.
Wenn Du dann nicht das passende gefunden hast melde Dich.
Lg Martin
_________________ Ein Nutzer der Ecke
|
|
klezmor 
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 10.08.06 16:46
Leider habe ich die Philosophie von manchen Forennutzern noch immer nicht verstanden.
Was ist so schlimm daran, wenn man Fragen stellt die möglicherweise schon einmal gestellt wurden, bzw. deren Antworten man aus der OH ableiten könnte. Wer sich nicht für solche Threads interessiert, der sollt einfach über sie hinweg lesen.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Fr 11.08.06 08:55
klezmor hat folgendes geschrieben: | Was ist so schlimm daran, wenn man Fragen stellt die möglicherweise schon einmal gestellt wurden, |
Ganz einfach: Man muss das Rad ja nicht neu erfinden... und wozu soll jemand in die OH gehen und den entsprechenden Teil hier reinkopieren bzw. das gleiche in Grün nochmal schreiben, wenn du mit ein mal F1 drücken die Lösung doch schon hast?!
|
|