Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Pfad nimmt String nicht. (https://www.delphipraxis.net/164439-pfad-nimmt-string-nicht.html)

wallwriht 12. Nov 2011 18:52

Pfad nimmt String nicht.
 
Hallo zusammen.
Ich habe bei einem Programm eine Datei die ich mit copy kopiere und vorher mit if fileexists prüfe.
Wenn ich den Pfad der Datei als 'C:\ user.......' angebe dann klappt alles wie es soll( bitte verzeiht mir das ih hier nicht das genaue kopiere bin mobil online)
Benutze ich nun meine variable: username die genau den gleichen Inhalt hat , den ich auch benutze wenn ich die Abfrage direkt im Programm eingebe ('C:\' + username+ '....' statt 'C:\Christoph......' ) funktionieren die Befehle nichtmehr. Iffileexist gibt auf einmal false aus obwohl username zumindest unter meinem Benutzer genau dem String 'Christoph' enthält.
Kann mir jemand helfen?
Lg
Christoph

mkinzler 12. Nov 2011 18:55

AW: Pfad nimmt String nicht.
 
Den Pfad am Besten als special folder ermitteln

wallwriht 12. Nov 2011 18:56

AW: Pfad nimmt String nicht.
 
Zitat:

Zitat von mkinzler (Beitrag 1135917)
Den Pfad am Besten als special folder ermitteln

Verzeihung, wie mache ich das? Bekomme den Benutzername als String aus einer Funktion getusername.

Ich brauche NUR den Benutzername als String der Rest ist immer gleich, und es ist ein Ordner den ich denke ich nicht als Special Folder bekomme.

Luckie 12. Nov 2011 19:07

AW: Pfad nimmt String nicht.
 
Schuss ins Blaue: Die Variable username enthält noch das Stringendezeichen (#0) am Ende.

Nichts desto trotz solltest du den Pfad mit genannter Funktion ermitteln. Bei mir gibt es den Ordner C:\Users nämlich nicht (Windows XP).

Bummi 12. Nov 2011 19:18

AW: Pfad nimmt String nicht.
 
such einfach mal nach SHGetSpecialFolderLocation

Micha88 12. Nov 2011 19:58

AW: Pfad nimmt String nicht.
 
Zum beispiel so (Kopie, nicht mein Code)

Delphi-Quellcode:
uses
 ShlObj, ActiveX, ShellApi;
{ ... }
function GetSpecialFolder(const AFolder: Integer): String;
var
  ItemIDList: PItemIDList;
  hPath: PChar;
  ShellH: IMalloc;
begin
  if SUCCEEDED(SHGetSpecialFolderLocation(Application.Handle, AFolder, ItemIDList)) then
  begin
    try
      hPath:= StrAlloc(max_path);
      try
        if SHGetPathFromIDList (ItemIDList, hPath) then
          Result:=hPath;
      finally
        StrDispose(hPath);
      end;
    finally
     if SHGetMalloc(ShellH) = NOERROR then
       ShellH.Free(ItemIDList);
    end;
  end
  else
    RaiseLastOSError;
end;

Furtbichler 13. Nov 2011 08:11

AW: Pfad nimmt String nicht.
 
Ich bekomme solche Probleme immer heraus, indem ich mir den entgültigen String (Pfad) genau anschaue.
Also anstatt
Delphi-Quellcode:
Copy ('C:\User\'+username+'\foobar'...)
eben ein
Delphi-Quellcode:
DateiPfad := 'C:\User\'+username+'\foobar';
Copy (DateiPfad...)
Dieser Tipp ist zusätzlich (und unabhängig) zu den vorherigen gemeint. Denn richtig richtig ist es nur dann, wenn man sich von Windows den Benutzerpfad geben lässt.

Sir Rufo 13. Nov 2011 08:33

AW: Pfad nimmt String nicht.
 
Schau dir mal das hier an

Damit wird der Zugriff sehr simpel ;)

wallwriht 14. Nov 2011 15:10

AW: Pfad nimmt String nicht.
 
Also erstmal nochmal danke an alle, es handelte sich bei mir um ein Formatierungsproblem. Habe den String mal in ein Edit schreiben lassen mit edit1.Text:=username; und dann mit username:=edit1.Text; wieder ausgelesen, dann klappt es bizarrerweise.

Edit: Werde mir die genannten Funktionen mal ansehen um es allgemeingültig hinzubekommen!

DeddyH 14. Nov 2011 15:16

AW: Pfad nimmt String nicht.
 
Dann kannst Du Dir auch SHGetFolderPath anschauen oder gleich den Code von Sir Rufo nehmen ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.
Seite 1 von 2  1 2      

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