AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

Ein Thema von sundance · begonnen am 31. Aug 2016 · letzter Beitrag vom 5. Sep 2016
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:09
Warum muss das nicht immer stimmen? Genau das willst du doch oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:12
Warum muss das nicht immer stimmen? Genau das willst du doch oder?
Vermutlich will er bei D:\MeinDelphiCode nicht D:\Meindelphicode kriegen.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:18
Erst alles klein schreiben (LowerCase) und dann "jeden ersten Buchstaben nach einem Backslash groß".
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:21
Erst alles klein schreiben (LowerCase) und dann "jeden ersten Buchstaben nach einem Backslash groß".
Klappt bei Aviators und meinen Beispielen eben nicht.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:26
Warum?
Code:
C:\MeinOrdner\meinDritterOrdner\ -> C:\meinordner\meindritterordner\ -> C:\Meinordner\Meindritterordner\
Oder was hab eich da jetzt übersehen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:30
Warum?
Code:
C:\MeinOrdner\meinDritterOrdner\ -> C:\meinordner\meindritterordner\ -> C:\Meinordner\Meindritterordner\
Oder was hab eich da jetzt übersehen?
Ich habe den OP so interpretiert als würde er eine "kanonische" Form des Namens im Dateisystem wollen.

Aber vorzugsweise sollte sundance sich halt mal äußern.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von sundance
sundance

Registriert seit: 9. Mai 2006
98 Beiträge
 
Delphi 7 Professional
 
#7

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:36
Sorry für die Verwirrung bedingt durch die unklare Formulierung.
Es ist tatsächlich so (Glaskugel = OK), dass mich die korrekte Schreibweise (Groß-/Kleinschreibung) interessiert.
Und das, wie schon angemerkt, nicht aus funktionellen, sondern nur aus optischen Gründen.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:18
Warum muss das nicht immer stimmen? Genau das willst du doch oder?
Also was der TE will weiß ich nicht. Meine Glaskugel scheint defekt zu sein.

Aber es gibt doch auch Ordnerstrukturen die so aussehen:
  • C:\Windows\System32\
  • C:\MeinOrdner\meinzweiterOrdner\
  • C:\MeinOrdner\meinDritterOrdner\
  • C:\MeinOrdner\Meinvierterordner\
Dann würde es ja auch nicht stimmen, wenn er nach dem Backslash den ersten Buchstaben groß schreiben würde.

Aber das ist ab diesem Zeitpunkt alles nur noch reine Spekulation. Der TE soll sich mal dazu äußern, was er wirklich will. Ich habe die Eingangsfrage nämlich auch nicht wirklich verstanden. Für mich ist da auch nur der Unterschied der Groß-/Kleinschreibung zu erkennen.
  Mit Zitat antworten Zitat
t.roller
(Gast)

n/a Beiträge
 
#9

AW: Funktion gesucht, die den tatsächlichen Pfadnamen ermittelt

  Alt 31. Aug 2016, 10:28
Delphi-Quellcode:
function TitleCase2(const sText: String;
         const bLowerCaseFirst: Boolean = True): String;
const
  cDelimiters = [#9, #10, #13, ' ', ',', '.', ':', ';', '"',
                 '\', '/', '(', ')', '[', ']', '{', '}'];
var
  iLoop: Integer;
begin
  Result := sText;
  if (Result <> '') then
  begin
    Result[1] := UpCase(Result[1]);
    for iLoop := 2 to Length(Result) do
      if (Result[iLoop - 1] in cDelimiters) then
        Result[iLoop] := UpCase(Result[iLoop]);
  end;
end;

function GetLongPathName(ShortName:String):String;
var NameS: String;
     Len : integer;
     Buffer: array[0..MAX_PATH] of Char;
     pDummy: PCHAR;
begin
     Len := GetFullPathName(PChar(ShortName), 0, PChar(result), pDummy);
     SetLength(NameS, Len);
     GetFullPathName(PChar(ShortName), Len, PChar(NameS), pDummy);
     result := TitleCase2(NameS);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Caption:= GetLongPathName('c:\windows\system32');
end;
Alternative:
Delphi-Quellcode:
function TitleCase3(const sText: String;
         const bLowerCaseFirst: Boolean = True): String;
var
  iLoop: Integer;
begin
  Result := sText;
  if (Result <> '') then
  begin
    Result[1] := UpCase(Result[1]);
    for iLoop := 2 to Length(Result) do
      if (not (Result[iLoop - 1] in ['a'..'z','A'..'Z','0'..'9'])) then
          Result[iLoop] := UpCase(Result[iLoop]);
  end;
end;

function GetLongPathName(ShortName:String):String;
var NameS: String;
     Len : integer;
     Buffer: array[0..MAX_PATH] of Char;
     pDummy: PCHAR;
begin
     Len := GetFullPathName(PChar(ShortName), 0, PChar(result), pDummy);
     SetLength(NameS, Len);
     GetFullPathName(PChar(ShortName), Len, PChar(NameS), pDummy);
     result := TitleCase3(NameS);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Caption:= GetLongPathName('C:\Windows\System32\ATEST\123Test');
end;

Geändert von t.roller (31. Aug 2016 um 11:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:12 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