Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DirectoryEdit "\" Problem (https://www.delphipraxis.net/119355-directoryedit-%5C-problem.html)

LuCSteR 25. Aug 2008 11:20


DirectoryEdit "\" Problem
 
Hi,

ich benutze ein DirectoryEdit. Wenn ich euf die Schaltfläche zur Ordnerwahl klicke (Dialog öffnet sich), suche ich mir einen Zielordner aus, dessen Pfad im Edit-Feld eingefügt wird. Nur gibts dabei ein Problem. Am Ende des Strings befindet sich kein "\". Ohne Backslash funktioniert aber meine Funktion zur Ordnererstellung nicht. Ich versuche krampfhaft diesen Backslash anzufügen, nachdem der Dialog geschlossen wird.
Ich habe es versucht mit:
OnAcceptDirectory-Ereignis
DirectoryEdit1.Caption:=DirectoryEdit1.Caption+'\'
und mit
DirectoryEdit1.Directory:=DirectoryEdit1.Directory +'\'

Funktioniert nur leider nicht. Der angezeigte String bekommt keinen Backslash angehängt.
Ich würde dem Nutzer gern die Möglichkeit offen lassen, den Pfad per Hand ins Editfeld einzutragen. D.h., wenn ich OnEditingDone-Ereignis nutzen würde, um einen "\" anzuhängen, wäre das Ergebnis ja wieder falsch.

Jmd. ne Idee?

Grüße.

DeddyH 25. Aug 2008 12:06

Re: DirectoryEdit "\" Problem
 
Zitat:

Ohne Backslash funktioniert aber meine Funktion zur Ordnererstellung nicht.
Da wird wohl der Hase im Pfeffer liegen. Wie sieht die Funktion denn aus?

xaromz 25. Aug 2008 12:26

Re: DirectoryEdit "\" Problem
 
Hallo,

es gibt doch die Funktion Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter, die den Backslash bei Bedarf hinten anhängt.

Gruß
xaromz

DeddyH 25. Aug 2008 12:28

Re: DirectoryEdit "\" Problem
 
Das scheint die Komponente aber nicht zu interessieren. Aber wie gesagt, ich meine, der Fehler liegt an anderer Stelle.

LuCSteR 25. Aug 2008 13:20

Re: DirectoryEdit "\" Problem
 
Sorry, war Mittagessen :))

Also den Ordner lasse ich mit CreateDir erstellen und diese verlangt am Ende des Strings ein "\". Das hatte ich letzte Woche glaube ich so getestet.

Delphi-Quellcode:
procedure TForm2.DirectoryEdit1AcceptDirectory(Sender: TObject;
  var Value: String);
begin
  IncludeTrailingBackslash(GetCurrentDir);
  //IncludeTrailingPathDelimiter(GetCurrentDir);
  //DirectoryEdit1.Directory:=IncludeTrailingPathDelimiter(GetCurrentDir);
  //DirectoryEdit1.Caption:=IncludeTrailingPathDelimiter(GetCurrentDir);
end;
Hat alles leider nicht funktioniert.

DeddyH 25. Aug 2008 13:24

Re: DirectoryEdit "\" Problem
 
Und selbst wenn CreateDir einen Backslash am Ende erwartet (kann mich gar nicht daran erinnern), was spricht dann dagegen, diesen bei der Übergabe anzuhängen? Was die Kompo anzeigt, soll Dir doch egal sein.
Delphi-Quellcode:
if not CreateDir(IncludeTrailingPathDelimiter(DirectoryEdit1.Directory)) then
  ShowMessage('Ordner kann nicht angelegt werden.');

LuCSteR 25. Aug 2008 13:33

Re: DirectoryEdit "\" Problem
 
Zitat:

Zitat von DeddyH
Was die Kompo anzeigt, soll Dir doch egal sein.[/delphi]

Das ist der Punkt ;) Ist mir halt nicht egal. Wenn es mir egal wäre, dann bräuchte ich auch keine visuelle Komponente :) Klar ist es einfach noch nen "\" anzuhängen. Werd dann wohl doch die händische Editierung unter den Tisch fallen lassen müssen.

Achja der Pfad wird mit einem String aus einer Ini Datei verglichen, und wenn Unterschiede bestehen verändert. Stellt sich nat. die Frage, wie ein Nutzer das eingeben würde. Mit oder ohne Slash am Ende. Mmh. Werde ich wohl eine Stringüberprüfung des letzten Zeichens machen und dann je nach dem \ anhängen oder nicht.

Damit hat sich das problem eigentlich erübrigt. Nur fraglich, warum durch die beiden Kompo-Funktion trotzdem kein Slash angehängt wird :s

Trotzdem danke für die Hilfe.

DeddyH 25. Aug 2008 13:59

Re: DirectoryEdit "\" Problem
 
Hier bestätigt es sich wieder einmal: man sollte die Logik von der Darstellung trennen. Den Backslash zum Vergleich an- bzw. abzuhängen, ist IMHO die eleganteste und fehlerresistenteste Möglichkeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 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