![]() |
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 |
Re: SaveDialog/OpenDialog Pfad vorgeben
Schau Dir mal die Eigenschaft InitialDir an.
|
Re: SaveDialog/OpenDialog Pfad vorgeben
Danke, genau danach habe ich gesucht :firejump:
|
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 |
Re: SaveDialog/OpenDialog Pfad vorgeben
du kannst doch den UNC-Pfad einfach angeben?
\\Servername\Freigabename\Pfad |
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 |
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. ![]() Woyzeck |
Re: SaveDialog/OpenDialog Pfad vorgeben
![]() und es ist mit dierser Komponente nicht möglich solche Pfade auszuwählen. |
Re: SaveDialog/OpenDialog Pfad vorgeben
Das kommt ja darauf an, wohin DocumentRoot in Deinem Webserver zeigt.
|
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 ![]() Und jetzt ist die Preisfrage: Wie kann ich ihn in dieses Verzeichnis locken? Woyzeck |
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 |
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 |
Re: SaveDialog/OpenDialog Pfad vorgeben
URL <> UNC
|
Re: SaveDialog/OpenDialog Pfad vorgeben
Zitat:
Nur ist die Frage: Wie lautet dieser UNC, damit ich das gleiche Verzeichnis im Dialogfenster angezeigt bekomme, dass ich unter ![]() Bitte sagt mir, dass das möglich ist. :gruebel: Gruß, Woyzeck |
Re: SaveDialog/OpenDialog Pfad vorgeben
Wie ich schon sagte, wenn das Documentroot des Webservers bekannt ist, kannst Du dieses anstelle von
![]() |
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 ;) |
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:
|
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.
|
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 |
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.
|
Re: SaveDialog/OpenDialog Pfad vorgeben
Zitat:
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:
|
Re: SaveDialog/OpenDialog Pfad vorgeben
Das DocumentRoot wird in der httpd.conf Deines Apache (vermutlich unter C:\XAMPP\Apache\conf) festgelegt.
|
Re: SaveDialog/OpenDialog Pfad vorgeben
In der httpd.conf steht
Zitat:
Woher bekomme ich den Freigabenamen? |
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.
|
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) ? |
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.
|
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 |
Re: SaveDialog/OpenDialog Pfad vorgeben
klasse, es funktioniert :mrgreen:
:bounce1: vielen Dank für die Hilfe. Ihr seid echt klasse :) |
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:
Was mache ich falsch?
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; |
Re: SaveDialog/OpenDialog Pfad vorgeben
Versuch es mal mit
Delphi-Quellcode:
ExtractFilename(OpenPictureDialog1.Filename);
|
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? |
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.
|
Re: SaveDialog/OpenDialog Pfad vorgeben
wird gemacht :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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