AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Unit zur Verwendung von SHGetKnownFolderPath

Unit zur Verwendung von SHGetKnownFolderPath

Ein Thema von ringli · begonnen am 11. Jun 2009 · letzter Beitrag vom 19. Sep 2018
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.626 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#11

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 17. Sep 2018, 12:56
Denke was er damit sagen wollte ist, dass es faktisch keinen Unterschied macht. An beiden Stellen wird die gleiche Funktion mit identischer Signatur und allem drum und dran aus der `ole32.dll` importiert.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#12

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 17. Sep 2018, 16:54
Denke was er damit sagen wollte ist, dass es faktisch keinen Unterschied macht. An beiden Stellen wird die gleiche Funktion mit identischer Signatur und allem drum und dran aus der `ole32.dll` importiert.
Danke und ja.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
683 Beiträge
 
#13

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 17. Sep 2018, 17:38
Das sind wir von dir ja gewohnt.

…, das aber nicht die Frage selbst beantwortet, obwohl diese von dir ausdrücklich zitiert wurde.

Bitte gehe nächstes Mal auf die Fragen bzw. auf die Kommentare der Benutzer ein.
Kannst du dir sowas nicht mal schenken, langsam nervt's. Eure Unstimmigkeiten sind bekannt. Und solche Spitzen heizen die Gemüter nur wieder unnötigerweise an.
Das hat mal so gar nichts mit Delphi zu tun und gehört hier einfach nicht hin.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (17. Sep 2018 um 17:40 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.266 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 17. Sep 2018, 23:08
Das sind wir von dir ja gewohnt.

…, das aber nicht die Frage selbst beantwortet, obwohl diese von dir ausdrücklich zitiert wurde.

Bitte gehe nächstes Mal auf die Fragen bzw. auf die Kommentare der Benutzer ein.
Kannst du dir sowas nicht mal schenken, langsam nervt's. Eure Unstimmigkeiten sind bekannt. Und solche Spitzen heizen die Gemüter nur wieder unnötigerweise an.
Das hat mal so gar nichts mit Delphi zu tun und gehört hier einfach nicht hin.
Du hast recht. Aber wieso sagst du das nicht dem Anderen. Dessen Spitzen sind um einiges schärfer.

Eigentlich ist das Ganze ja höchst kindisch. Ich weiß nicht, wieso ich mich darauf eingelassen habe, ich mache sowas sonst eigentlich nicht. Aber es würde mir helfen, wenn ihr nicht nur auf mir herumhacken, sondern auch seine Anpatzer abmahnen würdet. So, das war jetzt wieder äußerst kindisch. Aber ich habe mal das Bedürfnis, ehrlich zu sein, auch wenn es sich kindisch anhört.
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#15

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 00:12
Ausgangslage:
In einem anderen Forum sagte jemand, man solle in diesem Zusammenhang eher Winapi.Ole2.CoTaskMemFree statt Winapi.ActiveX.CoTaskMemFree verwenden.

Was haltet ihr davon?
Gar nichts, aber wenn man Dateigröße sparen mag und nur das CoTaskMemFree benötigt ohne Zusatz Units einzubinden die die .exe aufblähen, nutze ich die Api direkt procedure CoTaskMemFree(pv: Pointer); stdcall; external 'ole32.dll';
...Ich blieb sachlich, aber da die Frage war obs besser ist die Milch im Kaffee rechts- oder linksrum zu drehen ist mein Argument dazu: Es ist Wurst und einen Tipp dazu habe ich auch geliefert.

Deine Reaktion darauf:
Das sind wir von dir ja gewohnt.

Sparen ist zwar allgemein ein gutes Argument (der Weltspartag findet alljährlich in der letzten Oktoberwoche statt), das aber nicht die Frage selbst beantwortet, obwohl diese von dir ausdrücklich zitiert wurde.

Bitte gehe nächstes Mal auf die Fragen bzw. auf die Kommentare der Benutzer ein.
Da Deine Frage beantwortet war, ich niemand angemacht, gedemütigt, beleidigt oder sonst eine Anspielung getan wurde...
...ich hätte ja auch Schreiben können "Weltspartag? WTF? Was geht da wieder im Nimmerland ab...." Das hat nichts mit Delphi am Hut.

also obwohl ich nichts weiter schrieb zu Dir bzw Dich betreffend, kommt nun:
blablah siehe oben
Kannst du dir sowas nicht mal schenken, langsam nervt's. Eure Unstimmigkeiten sind bekannt. Und solche Spitzen heizen die Gemüter nur wieder unnötigerweise an.
Das hat mal so gar nichts mit Delphi zu tun und gehört hier einfach nicht hin.
Du hast recht. Aber wieso sagst du das nicht dem Anderen. Dessen Spitzen sind um einiges schärfer.

Eigentlich ist das Ganze ja höchst kindisch. Ich weiß nicht, wieso ich mich darauf eingelassen habe, ich mache sowas sonst eigentlich nicht. Aber es würde mir helfen, wenn ihr nicht nur auf mir herumhacken, sondern auch seine Anpatzer abmahnen würdet. So, das war jetzt wieder äußerst kindisch. Aber ich habe mal das Bedürfnis, ehrlich zu sein, auch wenn es sich kindisch anhört.
>>>sondern auch seine Anpatzer abmahnen würdet.
Jetzt habe ich völlig den Faden verloren.
War jetzt "Gar nichts" beleidigend? War der Tipp beleidigend? Sind Deine merkwürdigen nicht-Delphi bezogenen Sätze beleidigend?

Ganz ehrlich, mir sind Deine Antworten darauf egal, bitte verkneife Dir darauf zu reagieren, andere Leser könnten wenigstens vom Tipp profitieren, also der WinApi Tipp (da das Delphi betrifft und dies ein Super Forum für eben dieses ist) nicht Dein Weltspartag Zitat.

Hier rauch ne Friedenspfeife mit mir und Versuche meine Texte weder falsch zu verstehen noch offtopic (nicht Delphi bezogen) zu Zitieren.

Von daher meine Bitte, bleib in Zukunft beim Thema Delphi, wenn Du gewisse Dinge nicht verstehen solltest weil Du noch nicht bereit dazu bist, da kann Dir geholfen werden. Wenn Du die Hilfe als unangebracht empfindest und daraus nur wieder 4/5 Seiten Stänkerei entsteht, darauf habe ich (und wahrscheinlich andere Leser) keine Lust mehr, aber man könnte ja erneut nachfragen wenn man etwas nicht versteht bevor jedes einzelne Wort auf die Waage gelegt wird und merkwürdige Zitate daraus entstehen.
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
158 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#16

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 14:28
Es hat ja ein wenig damit zu tun (SHGetKnownFolderPath).
Geht das auch irgendwie andersrum? Ich habe z.B. "C:\Programme" und möchte den wirklichen Ordner ermitteln. Also hier dann "C:\Program Files".
Geht das irgendwie?

Gruß
Micha
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)
Online

Registriert seit: 29. Mai 2002
37.313 Beiträge
 
Delphi 2006 Professional
 
#17

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 14:49
Wie oft muss man euch beide eigentlich noch ermahnen!

Ich hoffe mit dem letzten Beitrag wird wieder zum Thema zurückgefunden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#18

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 17:28
Es hat ja ein wenig damit zu tun (SHGetKnownFolderPath).
Geht das auch irgendwie andersrum? Ich habe z.B. "C:\Programme" und möchte den wirklichen Ordner ermitteln. Also hier dann "C:\Program Files".
Geht das irgendwie?

Gruß
Micha
Ich mache es so:
Delphi-Quellcode:
// kann sein das Dein Delphi die zwei Zeilen schon in Windows.pas hat, dann wegmachen.
const FILE_NAME_NORMALIZED = $0;
Function GetFinalPathNameByHandleA(hFile: THandle; lpszFilePath: LPSTR; cchFilePath: DWORD; dwFlags: DWORD): DWORD; stdcall; external 'Kernel32.dll';

function _FileGetSymLinkTarget( const APathToLink : string; var ATarget : string ) : boolean;
  var
    LinkHandle: THandle;
    TargetName: array [0..OFS_MAXPATHNAME-1] of AnsiChar;
  begin
    ATarget := '';
    LinkHandle := CreateFile( PChar(APathToLink), 0, FILE_SHARE_READ, nil,
        OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
    Win32Check(LinkHandle <> INVALID_HANDLE_VALUE);
    try
      Result := GetFinalPathNameByHandleA(LinkHandle, @TargetName, OFS_MAXPATHNAME, FILE_NAME_NORMALIZED) > 0;
      if Result then
        begin
        ATarget := TargetName;
        if Pos( '\\?\UNC\', ATarget ) = 1 then
           begin
           Delete( ATarget, 1, 8 );
           Insert( '\\', ATarget, 1 );
           end
          else
          if Pos( '\\?\', ATarget ) = 1 then
             Delete( ATarget, 1, 4 );
        end;
    finally
      CloseHandle(LinkHandle);
    end;
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  s: String;
begin
  s := '';
  _FileGetSymLinkTarget('c:\programme',s);
  ShowMessage(s);
end;
Zitat:
C:\Program Files
Wie oft muss man euch beide eigentlich noch ermahnen!

Ich hoffe mit dem letzten Beitrag wird wieder zum Thema zurückgefunden.
Verzeih mir und ich hoffe mit diesem Beitrag Deinen Wunsch Sinngemäß umgesetzt zu haben
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
158 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#19

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 18:00
hihi... habe zeitgleich auch "GetFinalPathNameByHandle" gefunden und was probiert und wollte gleich mal hier nachfragen, ob man sich auf dieses "\\?\" (was mit übergeben wird) verlassen kann?
Aber deine Funktion nehme ich gerne. Dankeschön

Was ich auch noch nicht so ganz begreife... mit diesem "A" und "W" bei Funktionen.

Also "GetFinalPathNameByHandleA". Es gibt auch "W". Ich glaube A für Ansi und W für WideString? Da muss man wohl je nach aktion/nutzen die richtigen Funktionen wählen? Gerade wegen Dateinamen etc. nutze ich dann z.B. "FindFirstFileW". So ganz bin ich da noch nicht durch (wieso, weshalb, warum) aber bei mir gehen dann schon mal auch chinesische/japanische/russische Dateinamen. Na am Ende muss man das wohl dann alles durchtesten.

Gruß
Micha
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
2.278 Beiträge
 
Delphi 2010 Professional
 
#20

AW: Unit zur Verwendung von SHGetKnownFolderPath

  Alt 18. Sep 2018, 18:10
hihi... habe zeitgleich auch "GetFinalPathNameByHandle" gefunden und was probiert und wollte gleich mal hier nachfragen, ob man sich auf dieses "\\?\" (was mit übergeben wird) verlassen kann?
Aber deine Funktion nehme ich gerne. Dankeschön

Was ich auch noch nicht so ganz begreife... mit diesem "A" und "W" bei Funktionen.

Also "GetFinalPathNameByHandleA". Es gibt auch "W". Ich glaube A für Ansi und W für WideString? Da muss man wohl je nach aktion/nutzen die richtigen Funktionen wählen? Gerade wegen Dateinamen etc. nutze ich dann z.B. "FindFirstFileW". So ganz bin ich da noch nicht durch (wieso, weshalb, warum) aber bei mir gehen dann schon mal auch chinesische/japanische/russische Dateinamen. Na am Ende muss man das wohl dann alles durchtesten.

Gruß
Micha
Ich habe bei Microsoft nur diese Api gefunden. Wenn es eine Wide Version gibt, dann unbedingt die bevorziehen! Unicode und so. Ja, das A am Ende steht für Ansi, deswegen AnsiChar im Code. Unicode hat dann alle characters, also W.
Ich schreibe mal mein Code für Wide um und teste, meine Windows.pas kennt halt gar keine von denen (Delphi 2019) und Microsoft sagte mir nix von einer W... oder ich habs überlesen, dann sorry!
Gruß vom KodeZwerg
Wenn ein unerwarteter Fehler aufgetreten ist, frage ich mich immer, welche Fehler erwartet wurden...
  Mit Zitat antworten Zitat
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 21:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf