Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi SaveDialog/OpenDialog Pfad vorgeben (https://www.delphipraxis.net/139142-savedialog-opendialog-pfad-vorgeben.html)

Vasco da Gama 24. Aug 2009 16:01


SaveDialog/OpenDialog Pfad vorgeben
 
Hallo, nachdem ich viel googelte, fand ich immernoch keine Lösung:

Wie kann ich einem SaveDialog, bzw. einem Opendialog einen Pfad(einen Ordner, ein Verzeichnis, wie immer ihr es nennen wollt :wink: ) vorgeben.
Sodass beim Execute er bereits im Ordner ist...

Danke, mfG

DeddyH 24. Aug 2009 16:13

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Schau Dir mal die Eigenschaft InitialDir an.

Vasco da Gama 24. Aug 2009 18:04

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Danke, genau danach habe ich gesucht :firejump:

Woyzeck 11. Sep 2009 18:14

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Hallo zusammen

nach so etwas ähnlichem suche ich auch.

Und zwar möchte ich über einen OpenDialog oder OpenPictureDialog eine Bilddatei auswählen lassen und den Pfad zu der Datei anschließend in einer Memokomponente ausgeben. Ist ja alles halb so wild.

Allerdings liegen die Bilddateien auf einem Server im Netzwerk.
Wie kann ich dem Dialog-Fenster nun mitteilen, dass dieses InitialDir auf dem Server steht?

In einem zweiten Schritt soll dann eventuell auch noch ermöglicht werden, Bilder vom lokalen Rechner auf dem Server abzulegen.
Der Pfad auf dem Server kann ruhig statisch im Programmcode festgelegt sein.
Wie würdet ihr das umsetzen?



Vielen Dank im Voraus

Woyzeck

himitsu 11. Sep 2009 18:23

Re: SaveDialog/OpenDialog Pfad vorgeben
 
du kannst doch den UNC-Pfad einfach angeben?

\\Servername\Freigabename\Pfad

FAlter 11. Sep 2009 18:24

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Hi,

InitialDir wirkt nur, wenn kein FileName vorgeschlagen ist.

Aber es geht genausogut, einen Absoluten Pfad als Dateinamen vorzugeben (also statt Vorschlag "Unbenannt.bmp" könnte "C:\Users\klsdfhlk\Pictures\Unbenannt.bmp" drinstehen oder "\\Serverlsdfjio\Freigaberklöjsfdklf\Verzkansfjk\U nbenannt.bmp").

Gruß
Felix

Woyzeck 11. Sep 2009 18:37

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Schon einmal vielen Dank für die flotten Antworten. Ihr seid ja echt fix :-)


Es tut mir leid, wenn ich mich jetzt etwas doof anstelle, aber ich habe mit der Komponente noch nie gearbeitet.

Ich habe jetzt das Problem, dass er das Verzeichnis gar nicht aufruft, was ich ihm in InitialDir angebe, obwohl kein FileName angegeben ist.

und welchen Pfad muss ich angeben, um den Server (zunächst ist das localhost) anzusprechen und in dem Verzeichnis zu landen, dass mir auch mein Webbrowser anzeigt, wenn ich z.b. http://localhost/ordnername aufrufe?

Woyzeck

himitsu 11. Sep 2009 18:41

Re: SaveDialog/OpenDialog Pfad vorgeben
 
http://... ist eine URL und kein Verzeichnispfad
und es ist mit dierser Komponente nicht möglich solche Pfade auszuwählen.

DeddyH 11. Sep 2009 18:43

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Das kommt ja darauf an, wohin DocumentRoot in Deinem Webserver zeigt.

Woyzeck 11. Sep 2009 19:10

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Das ich als InitialDir keine URL angeben kann ist mir klar. Diese URL zeigt aber ja auf ein bestimmtes Verzeichnis.

Ich nutze XAMPP und über http://localhost/ordnername kann ich mir das Verzeichnis C:\...\xampp\htdocs\ordnername anzeigen lassen.

Und jetzt ist die Preisfrage: Wie kann ich ihn in dieses Verzeichnis locken?



Woyzeck

himitsu 11. Sep 2009 19:18

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Es gibt Funktionen, welche eine URL zerlegen (in den Server und den Pfad)
das kannst du auch selber machen.


Und dann verbindest du den Pfad mit dem lokalen Pfad des Rootverzeichnisses vom Server.


Etwas Fertiges wird man dafür vermutlich nicht nicht finden

Woyzeck 11. Sep 2009 19:31

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Klingt komplizierter als ich mir das vorgestellt habe.

Bedeutet das, ich kann nicht einfach über einen UNC-Pfad wie weiter oben gepostet wurde das Verzeichnis aufrufen?

Gruß, Woyzeck

DeddyH 11. Sep 2009 19:32

Re: SaveDialog/OpenDialog Pfad vorgeben
 
URL <> UNC

Woyzeck 11. Sep 2009 19:37

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Zitat:

URL<>UNC
Ist mir auch klar. Da ich aber ja keine URL eingeben kann für das InitialDir muss ich auf einen UNC zurückgreifen.
Nur ist die Frage: Wie lautet dieser UNC, damit ich das gleiche Verzeichnis im Dialogfenster angezeigt bekomme, dass ich unter http://localhost/ordnername finde oder unter C:\...\xampp\htdocs\ordnername?

Bitte sagt mir, dass das möglich ist. :gruebel:

Gruß, Woyzeck

DeddyH 11. Sep 2009 19:40

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Wie ich schon sagte, wenn das Documentroot des Webservers bekannt ist, kannst Du dieses anstelle von http://servername einsetzen, sofern es freigegeben ist. Aber dazu brauchst Du auch noch den Freigabenamen, sonst wird das wieder nix.

jfheins 11. Sep 2009 20:11

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Der Documentroot des Servers (also das htdocs-Verzeichnis) lässt sich eventuell aus der Registry auslesen. Aber einfach so bekommst du das nicht. Apache lässt sich übrigens auch so konfigurieren, dass unterschiedliche Anfragen unterschiedliche Verzeichnisse sehen. So kannst du z.B. ein Unterverzeichnis "public" machen und Zugriffe von außen sehen dann eben nur den Inhalt dieses Ordners.

Kurz gesagt: wenn du den Pfad des htdocs-Verzeichnisses hhaben möchtest, frag' den User ;)

Woyzeck 12. Sep 2009 10:07

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Wie komme ich an diesen Freigabenamen? Bzw. Was ist das überhaupt?

Wenn ich das jetzt richtig verstanden habe ist das DocumentRoot C:\xampp\htdocs

Aber ich kann ja nicht einfach bei dem InitialDir C:\xampp\htdocs\ordnername angeben, weil das ja dann auf den lokalen Rechner zugreift.
Irgendwo muss ich ja noch die IP-Adresse des Servers angeben oder?

Zitat:

Zitat von jfheins
Kurz gesagt: wenn du den Pfad des htdocs-Verzeichnisses hhaben möchtest, frag' den User ;)

Erkläre dich bitte :gruebel:

DeddyH 12. Sep 2009 10:14

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Noch einmal: Du vergleichst hier Äpfel mit Birnen. Über eine URL hast Du keine (ich wiederhole: keine!) Möglichkeit herauszufinden, welches Verzeichnis auf dem Webserver sich dahinter verbirgt. Daher musst Du wissen, wie die Variable DocumentRoot gesetzt ist, sonst brauchst Du gar nicht erst anzufangen. Dieses Verzeichnis muss dann auch noch auf dem Rechner, auf dem der Webserver läuft, freigegeben sein und zwar mit entsprechenden Rechten (die administrativen Freigaben lassen wir einmal außen vor). Erst dann kannst Du per UNC in der Syntax \\Rechnername\Freigabename darauf zugreifen.

himitsu 12. Sep 2009 10:17

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Der das Verzeichnis auf deinem Rechner liegt, kannst du es auch direkt verwenden und mußt nicht über eine Netzwerkfreigabe gehn.

RootVerzeichnis + Serververzeichnis

http://localhost/ordnername
C:\xampp\htdocs

C:\xampp\htdocs/ordnername

und nun eventuell noch das / in ein \ umwandeln und fertig

DeddyH 12. Sep 2009 10:20

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Der lokale Webserver ist ja nur vorläufig, der soll ja hinterher auf einem anderen Rechner laufen, wenn ich das richtig interpretiert habe.

Woyzeck 12. Sep 2009 10:21

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Zitat:

Zitat von himitsu
Der das Verzeichnis auf deinem Rechner liegt, kannst du es auch direkt verwenden und mußt nicht über eine Netzwerkfreigabe gehn.


Leider doch. Denn das muss später auf einen externen Rechner im Netzwerk zugreifen können. Zu Testzwecken muss das erst auf Localhost laufen.

Wie komme ich denn an diese DocumentRoot? Ich hab davon noch nie etwas gehört. In der Registry hab ich schon mal nachgeguckt. Aber wo finde ich das da?


//edit


Zitat:

Zitat von DeddyH
Der lokale Webserver ist ja nur vorläufig, der soll ja hinterher auf einem anderen Rechner laufen, wenn ich das richtig interpretiert habe.

War mal wieder jemand schneller :)

DeddyH 12. Sep 2009 10:23

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Das DocumentRoot wird in der httpd.conf Deines Apache (vermutlich unter C:\XAMPP\Apache\conf) festgelegt.

Woyzeck 12. Sep 2009 10:40

Re: SaveDialog/OpenDialog Pfad vorgeben
 
In der httpd.conf steht

Zitat:

DocumentRoot "C:/xampp/htdocs"
und jetzt?

Woher bekomme ich den Freigabenamen?

himitsu 12. Sep 2009 10:44

Re: SaveDialog/OpenDialog Pfad vorgeben
 
jetzt mußt du sehn, ob dieses Laufwerk auf dem Rechner für das Netzwerk (z.B. LAN) freigegeben wurde und unter welchem Namen ... dieser Name + den Netzwerknamen des PCs + das Unterverzeichnis ausgehend von dem reigegebenen Laufwerk/Verzeichnis ergeben dann den gesamtnamen.

Woyzeck 12. Sep 2009 10:55

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Muss dazu das komplette Laufwerk C:\ des Servers freigegeben werden oder reicht es den Unterordner des htdocs-Verzeichnisses freizugeben?

Und wie wird dann der Pfad zusammengesetzt (syntaktisch) ?

DeddyH 12. Sep 2009 11:03

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Es muss nur der Unterordner freigegeben sein. Allerdings kann der Freigabename ein ganz anderer sein als der Name des tatsächlichen Verzeichnisses, daher musst Du den wissen.

himitsu 12. Sep 2009 11:04

Re: SaveDialog/OpenDialog Pfad vorgeben
 
neee, man kann auch C:/xampp oder C:/xampp/htdocs freigeben ... halt irgendwas, wo dieser Ordner drin ist.


syntaktisch:
\\Servername\Freigabename\Pfad

Woyzeck 12. Sep 2009 11:14

Re: SaveDialog/OpenDialog Pfad vorgeben
 
klasse, es funktioniert :mrgreen:

:bounce1:

vielen Dank für die Hilfe.
Ihr seid echt klasse :)

Woyzeck 12. Sep 2009 12:10

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Eine Sache fehlt jetzt noch, damit mein Vorhaben komplett gelingt.

Und zwar möchte ich nur den Dateinamen selbst haben, der ausgewählt wurde.

Habe das folgendermaßen probiert umzusetzen:

Delphi-Quellcode:
procedure TfrmMain.btnBildClick(Sender: TObject);
var i:Integer; DateiPfad,InitDir,DateiName:String;
begin
if OpenPictureDialog1.Execute() then
begin
    DateiPfad:=OpenPictureDialog1.FileName;
    InitDir:=OpenPictureDialog1.InitialDir;
    ShowMessage(InitDir[1]);
    For i:=1 to (length(DateiPfad)-length(InitDir))do
begin
   DateiName[i]:=DateiPfad[length(DateiPfad)-length(InitDir)+1+i]; //Hier tritt der Fehler auf
end ;
end;
Was mache ich falsch?

DeddyH 12. Sep 2009 12:14

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Versuch es mal mit
Delphi-Quellcode:
ExtractFilename(OpenPictureDialog1.Filename);

Woyzeck 13. Sep 2009 11:47

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Das klappt... einfacher gehts wohl nicht. Vielen Dank :bounce1:

Nur aus reinem Interesse: Wieso funktioniert die Routine, die ich mir da ausgedacht habe nicht? Ich habe das Gefühl er hat ein Problem damit, die Variable DateiName Stelle für Stelle mit Zeichen zu füllen. Woran liegt das?



Mein nächstes Vorhaben ist jetzt, das "Hochladen" von Bildern auf den externen Rechner zu ermöglichen.
Dazu habe ich mir jetzt überlegt, benutze ich wieder einen OpenPictureDialog und erhalte durch ihn den Pfad auf dem lokalen Rechner. Diese Datei muss ich dann ja nur noch in den freigegebenen Ordner (fester Pfad) des Servers kopieren. Wie würdet ihr das umsetzen?

DeddyH 13. Sep 2009 11:51

Re: SaveDialog/OpenDialog Pfad vorgeben
 
Deine Methode hätte vielleicht sogar funktioniert, wenn Du vorher Speicher für den String reserviert hättest (SetLength). Und für eine neue Frage bitte einen neuen Thread eröffnen, sonst wird das zu chaotisch hier.

Woyzeck 13. Sep 2009 11:55

Re: SaveDialog/OpenDialog Pfad vorgeben
 
wird gemacht :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz