Autor |
Beitrag |
nullplan001
      
Beiträge: 212
Win 2000 Professional, Debian Linux 4.0 (Etch,Stable)
Pascal (FreePascal 2.0.2, TurboPascal 7.0), C(++) (G++/GCC 3.4.2 + MinGW), Java (JDK 1.5.0_07), PHP (PHP 5.1.4)
|
Verfasst: Mi 19.04.06 14:10
Hi all,
also, ich rate dringend davon ab, die Umgebungsvariablen aus der Registry zu zaubern, weil die
- von Version zu Version woanders sein können
- GetEnv (oder wie das halt gerade heist) die Umgebungsvariablen immer rauskriegt
- nicht alle Umgebungsvariablen in HKLM\Environment oder HKCU\Environment zu finden sind (z.B. %cd%, die den aktuellen Pfad rausfindet (braucht man nur in Batches))
Aber wenn du nur die statischen Variablen haben willst: Öffne eine CMD und tippe ein: cmd /?. Der darauffolgende Hilfetext sollte irgendwo den Speicherort der Variablen anzeigen. Unter Win2k eben HKCU\Environment für die Benutzervariablen und die Systemvariablen in HKLM\Environment.
Und was GetEnv angeht: nimm mal DOS in die USES-Klausel auf. Das sollte dein problem beheben. Wenn er das nicht hat, nimm deinen Code.
Tschö,
nullplan
_________________ Ich fahr' nicht selber, weil ich festgestellt habe: ich fahre zu emotional. Bin 180 gefahren wo 30 erlaubt war... -- Jürgen von der Lippe
|
|
Darth Sitthiander
      
Beiträge: 95
|
Verfasst: Do 20.04.06 13:25
ES gibt dort aber kein Dos.dcu. Kannst du mir ein Projekt machen mit dem man einen button hat und dann direkt wenn man darauf klickt das userbild in ein image geladen wird? Danke, das würde alles für mich leichter machen zu verstehen.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Do 20.04.06 14:48
Schau dir mal die Methode SHGetFolderPath an. Diese wird in der Unit SHFolder zur Verfügung gestellt. Damit ist man in jedem Fall auf der sicheren Seite. Und man muss so nicht über irgendwelche Umgebungsvariablen oder sonst etwas gehen.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
nullplan001
      
Beiträge: 212
Win 2000 Professional, Debian Linux 4.0 (Etch,Stable)
Pascal (FreePascal 2.0.2, TurboPascal 7.0), C(++) (G++/GCC 3.4.2 + MinGW), Java (JDK 1.5.0_07), PHP (PHP 5.1.4)
|
Verfasst: Do 20.04.06 18:03
@Dath Sittiander:Würde ich gerne, wenn ich Delphi hätte. Statt dessen schreibe ich dir ein Konsolen-Programm, was den Pfad der Bilder zurückliefert und hänge es samt Quelltext an. Bitte warten... So fertig. Weil du's bist, pack ich noch eine DLL oben drauf, die die Funktion getenv enthält. Bitte sehr.
Tschö,
nullplan
Einloggen, um Attachments anzusehen!
_________________ Ich fahr' nicht selber, weil ich festgestellt habe: ich fahre zu emotional. Bin 180 gefahren wo 30 erlaubt war... -- Jürgen von der Lippe
|
|
Darth Sitthiander
      
Beiträge: 95
|
Verfasst: Fr 21.04.06 10:41
Danke für die Beiden Tipps. Habs jetzt irgendwie kombinieren können^^ Und bei meinem Bruder funktioniert es jetzt. Danke vielmals!
|
|
nullplan001
      
Beiträge: 212
Win 2000 Professional, Debian Linux 4.0 (Etch,Stable)
Pascal (FreePascal 2.0.2, TurboPascal 7.0), C(++) (G++/GCC 3.4.2 + MinGW), Java (JDK 1.5.0_07), PHP (PHP 5.1.4)
|
Verfasst: Fr 21.04.06 18:38
Man hilft doch gern
Tschö,
nullplan
_________________ Ich fahr' nicht selber, weil ich festgestellt habe: ich fahre zu emotional. Bin 180 gefahren wo 30 erlaubt war... -- Jürgen von der Lippe
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Do 24.08.06 21:38
Hi,
der Thread ist zwar schon alt, da ich das selbige Problemchen mit den Bitmaps hatte
will ich mal hier noch eine Lösung vorschlagen.
Delphi kommt mit den von Windows angelegten Bitmaps nicht zu recht, alsoeinfach die Bitmaps von Win. laden lassen und gut ist's.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| implementation
{$R *.dfm}
uses ShlObj;
function TForm1.CommonDataPath: string; const CSIDL_COMMON_APPDATA = $0023; var Path: array [0..1024] of char; begin if SHGetSpecialFolderPath(Handle, Path, CSIDL_COMMON_APPDATA, TRUE) then Result := String(path) else Result := ''; end;
function TForm1.GetCurrentUserName: String; var pcUserName : pChar; dwMaxChars : dWord; const MAXCHARS = 255; begin dwMaxChars := MAXCHARS; GetMem(pcUserName, MAXCHARS + 1); if GetUserName(pcUserName, dwMaxChars) then Result := String(pcUserName) else Result := ''; FreeMem(pcUserName); end;
procedure TForm1.FormCreate(Sender: TObject); var LgPath: String; begin Label1.Caption := GetCurrentUserName;
LgPath := CommonDataPath + '\Microsoft\User Account Pictures\' + Label1.Caption + '.bmp';
if FileExists(LgPath) then begin Image1.Picture.Bitmap.Handle := LoadImage(0, PChar(LgPath), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); end else ShowMessage(format('%s'#13#10'"%s"', ['Datei nicht gefunden:', LgPath])); end; |
www.delphipraxis.net...st599701.html#599701
|
|
|