Autor |
Beitrag |
rob87
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 19.11.08 15:50
Hallo wiedermal,
Ich hab folgenden Sachverhalt:
Ich will ein PDF in den Eigenen Dateien des Users speichern. Soweit sogut. Nur habe ich nun grad bemerkt, dass mein Programm einen Fehler bringt, wenn der Eigene-Dateien-Pfad als letzten Buchstaben ein "\" hat.
Dann löst er nämlich die Datei in der Art auf Bsp.: "D:\\test1.pdf" und nicht "D:\test1.pdf"
Daher brauch ich eine Unterscheidung bez. des letzten Zeichens des Pfades.
Mein Pfad ist vom Typ:
Delphi-Quelltext 1:
| path: Array [0..Max_Path] Of Char |
Wie krieg ich nun das letzte Zeichen dieses Char-Arrays?
Meine Vorgehensweise wäre dann:
Delphi-Quelltext 1: 2: 3: 4: 5:
| if letztesZeichen von path = "\" then RvSystem1.OutputFileName := 'test1.pdf'; else RvSystem1.OutputFileName := '\test1.pdf'; i |
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 19.11.08 16:56
Delphi-Quelltext 1: 2: 3: 4:
| if path[Max_Path] = "\" then RvSystem1.OutputFileName := 'test1.pdf'; else RvSystem1.OutputFileName := '\test1.pdf'; |
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 19.11.08 17:14
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Mi 19.11.08 17:25
Du kannst dir ja mit ner Schleife ne eigene Funktion bauen.
BTW: den Pfad für "Eigene Dateien bekommt man so : GetShellDirectoryEx(CSIDL_PERSONAL, 'Personal');
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mi 19.11.08 17:28
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 19.11.08 17:46
Es gibt da noch die Funktion IncludeTrailingPathDelimiter in SysUtils. Wäre wahrscheinlich einfacher 
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Mi 19.11.08 18:56
rob87 hat folgendes geschrieben : | ...
Soweit war ich auch schon. Aber ich brauch ned des letzte Zeichen von dem Array. Sondern des letzte beschriebene.
Da muss ich dann wahrsch. mit ner Schleifen arbeiten?? Dafür gibts keine Funktion? |
Gibts (Ptr ist PChar): Ptr := StrEnd (MyPChar) - 1;
Gruss Reinhard
Moderiert von matze: Delphi-Tags hinzugefügt
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 19.11.08 19:07
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| uses SHFolder;
function GetUserPath(out sPath: string): Boolean; begin SetLength(sPath,MAX_PATH); SHGetFolderPath(0,CSIDL_PERSONAL,0,0,PAnsiChar(sPath)); SetLength(sPath,StrLen(PAnsiChar(sPath))); Result := Length(sPath) > 0; if Result then sPath := IncludeTrailingPathDelimiter(sPath); end; |
Gibt bei Erfolg den Pfad zu den eigenen Dateien samt Backslash zurück.
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 11:59
azubi_20 hat folgendes geschrieben : | Du kannst dir ja mit ner Schleife ne eigene Funktion bauen.
BTW: den Pfad für "Eigene Dateien bekommt man so : GetShellDirectoryEx(CSIDL_PERSONAL, 'Personal'); |
Hast du da irgendwelche Units eingebunden? Ich denk, der braucht da bei mir noch eine Unit...
|
|
rob87 
      
Beiträge: 461
Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
|
Verfasst: Mo 01.12.08 15:25
Frage beantwortet. Thread beendet. Merci an alle
|
|