Autor Beitrag
klezmor
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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



BeitragVerfasst: Mi 09.08.06 10:31 
Hallo,

das geht ganz einfach:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var pfad, name, ext, neuerName: string;
...
  pfad := ExtractFilePath(Application.ExeName); // der Pfad
  name := ExtractFileName(Application.ExeName); // der Name
  ext := ExtractFileExt(Application.ExeName); // die Dateierweiterung

  // Um im String die Dateierweiterung zu ändern, benutzt man folgende Funktion:
  neuerName := ChangeFileExt(Application.ExeName, '.tmp');



MfG
Delphi-Apostel
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Do 10.08.06 14:14 
user profile iconMartok 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Do 10.08.06 14:16 
bin mir nicht sicher, aber würde mal auf
ausblenden Delphi-Quelltext
1:
opendialog.files.count					

tippen...
korrigiert mich, wenn falsch ;-)
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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):
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Do 10.08.06 14:39 
user profile iconklezmor hat folgendes geschrieben:
In der Listbox soll jedoch nur der Dateiname angezeigt werden, nicht der ganze Pfad aus Opendialog.file.


Suche in der Entwickler-Ecke EXTRACTFILENAME

user profile iconklezmor hat folgendes geschrieben:
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.


Das müsstest du dann nochmal genauer erklären,damit ich's verstehe...
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: Do 10.08.06 14:41 
Ok habe das öffnen jetzt so in den Griff bekommen:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Do 10.08.06 16:27 
user profile iconklezmor hat folgendes geschrieben:
kommt eine FEhlermeldung

Und wie lautet die Meldung?

_________________
Ein Nutzer der Ecke ;-)
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: 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. :zwinker:

Wenn Du dann nicht das passende gefunden hast melde Dich. ;-)

Lg Martin

_________________
Ein Nutzer der Ecke ;-)
klezmor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 558


delphi 6 personal delphi 2005 personal
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 657


Delphi 3 Prof., Delphi 2005 PE
BeitragVerfasst: Fr 11.08.06 08:55 
user profile iconklezmor 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?!