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
Thema durchsuchen
Ansicht
Themen-Optionen

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
Aviator

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

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
 
#2

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


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 17:23 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