AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi GetProfilesDirectory in Delphi einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

GetProfilesDirectory in Delphi einbinden

Ein Thema von Go2EITS · begonnen am 15. Sep 2006 · letzter Beitrag vom 17. Sep 2006
Antwort Antwort
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

GetProfilesDirectory in Delphi einbinden

  Alt 15. Sep 2006, 16:35
Hi, ich hänge gerade mit "GetProfilesDirectory" aus dem
http://windowssdk.msdn.microsoft.com.../ms713356.aspx

Ich bekam als Vorschlag:
function GetProfilesDirectory;external 'userenv.dll' name 'GetProfilesDirectoryA';
Das funktioniert natürlich nicht. Ich habe es geändert:
function GetProfilesDirectory(lpProfilesDirChar; var lpcchSizeWORD):bool;external 'userenv.dll' name 'GetProfilesDirectoryA';
So wird es anstandslos compiliert. Wahrscheinlich muss noch ein stdcall rein. Aber das hilft auch nicht weiter.

Der Code dazu:
Delphi-Quellcode:
function LeseBenutzerProfilVerzeichnis:string;
var
   len : DWORD;
   b:string;
   begin
   len := 264;
   SetLength(result, len);
   if not GetProfilesDirectory(PChar(b), len) then
      RaiseLastWin32Error;
   SetLength(Result, len);
end;
wobei ich b eingesetzt habe, weil benutzerprofilverz in if not GetProfilesDirectory(PChar(benutzerprofilverz), len) then nicht declariert wurde.

Der Aufruf ShowMessage(LeseBenutzerProfilVerzeichnis) bringt nur Exceptions. Ich habe schon einiges ausprobiert, ich komme aber keinen Schritt weiter, obwohl ich der Lösung so nah bin.
Dann wäre aus der Notlösung des Thread Linkeine Lösung geworden.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: GetProfilesDirectory in Delphi einbinden

  Alt 15. Sep 2006, 18:49
Hi,

vergleiche mal, wenn du magst:

Delphi-Quellcode:
unit WinUtils;

interface

  function GetProfilesDir: String;

implementation

const
  userenv = 'userenv.dll';

function GetProfilesDirectory(lpProfilesDir: PChar; var Size: DWORD): BOOL;
  stdcall; external userenv name 'GetProfilesDirectoryA';

function GetProfilesDir: String;
var
  pathName: array [0 .. MAX_PATH] of Char;
  dwSize: DWORD;
begin
  dwSize := SizeOf(pathName);
  if GetProfilesDirectory(pathName, dwSize)
    then SetString(Result, pathName, dwSize)
    else RaiseLastWin32Error;
end;

end.
Grüße vom marabu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: GetProfilesDirectory in Delphi einbinden

  Alt 15. Sep 2006, 18:55
Moin Go2EITS,

es gibt übrigens für verschiedene Verzeichnisse (AllUsers, DefaultUser) verschiedene solcher Funktionen.
Allerdings funktionieren diese nur auf der NT-Schiene, teilweise erst ab Windows 2000.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: GetProfilesDirectory in Delphi einbinden

  Alt 15. Sep 2006, 20:49
@Marabu:
Probiere ich morgen aus, ok? Vielen Dank vorerst!

@Seehase: Ich habs gesehen, der Teil geht ab Windows2000. Win98/Me ist eh alter Hut, sorry.
Und da man die Winversion abfragen kann...

CU! Gute Nacht.
Go2EITS
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: GetProfilesDirectory in Delphi einbinden

  Alt 15. Sep 2006, 21:03
Moin Go2EITS,

ich fange auch nur noch bei 2000 an
Wenn Du vorher die Windows-Version abfragen willst, darfst Du aber nicht vergessen, dass Du die Funktion dann dynamisch einbinden muss (oder bei falscher Version eben nicht )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#6

Re: GetProfilesDirectory in Delphi einbinden

  Alt 17. Sep 2006, 09:47
@marabu
Guten Morgen! Herzlichen Dank! Deine Version funktioniert einwandfrei!

@Seehase
Zitat:
Wenn Du vorher die Windows-Version abfragen willst, darfst Du aber nicht vergessen, dass Du die Funktion dann dynamisch einbinden muss (oder bei falscher Version eben nicht )
Da muss ich mal in der DP reinsehen, wie man das macht. Danke für den Hinweis!

Seehase und marabu: Bis bald!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: GetProfilesDirectory in Delphi einbinden

  Alt 17. Sep 2006, 17:21
So zum Beispiel: http://www.michael-puff.de/Developer...sch_laden.html
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#8

Re: GetProfilesDirectory in Delphi einbinden

  Alt 17. Sep 2006, 18:35
@Luckie:
Danke, jetzt gehts aber Schlag auf Schlag!
Deinen Link habe ich mir angesehen und setze Eure Vorschläge in meinen Projekten um!
  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 01:40 Uhr.
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