Autor Téma: Uložení Gif za pomoci fce GetCurrentUserName  (Přečteno 5660 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #15 kdy: 19-09-2012, 16:57:12 »
Tak jsem na tom stejně i v případu:
Kód: Delphi [Vybrat]
  1. Image1.Picture.SaveToFile(GetSpecialFolderPath(CSIDL_DESKTOP, false));
No ted mi to teprve doslo: kde mas jmeno souboru  :o
Kód: Delphi [Vybrat]
  1. SaveToFile(IncludeTrailingPathDelimiter(GetSpecialFolderPath(CSIDL_DESKTOP))+'Foto1.gif');

Offline Jan Fiala

  • Příspěvků: 49
  • Karma: 0
    • PSPad editor
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #16 kdy: 19-09-2012, 19:20:58 »
Případy, kdy to nebude fungovat:
1. počítač s lokálním účtem a účtem v doméně. Pak cesta neplatí, protože jeden z účtů má přidaný ještě jméno počítače nebo jméno domény
2. poškozený profil - pak se vytváří náhradní profil s pořadovým číslem za jménem
3. přejmenovaný uživatel - pak nesouhlasí jméno uživatele s cestou v profilu
4. adresář USERS není umístěn na C:
5. nejde o Windows Vista nebo Win7 - pak adresář USERS neexistuje

Pokud nechceš používat API SHSpecialFolderLocation(), pak použij proměnnou prostředí %UserProfile%. Pomoci API pro získání její hodnoty pak zjistíš profil adresáře uživatele:

http://www.delphidabbler.com/articles?article=6#getenvvarvalue

Pro zjištění adresáře desktopu pak platí, co napsali ostatní, navíc někde se jmenuje adresář Desktop, jinde plocha a na dalších lokalizacích windows zase jinak.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #17 kdy: 19-09-2012, 19:32:24 »
Případy, kdy to nebude fungovat:
3. přejmenovaný uživatel - pak nesouhlasí jméno uživatele s cestou v profilu
4. adresář USERS není umístěn na C:
5. nejde o Windows Vista nebo Win7 - pak adresář USERS neexistuje
Tohle by melo vyresit pouziti CSIDL, ne? Jinak pozor na to, ze rada tech adresaru jsou jenom linky, takze Users je jenom link do Documents and Settings (a nebo vice versa, uz si to nepamatuju. Narazil jsem na tu u nejakeho vzacne se vyskytujiciho bugu ve woknech prave u linkovanych folderu)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2479
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #18 kdy: 19-09-2012, 20:46:46 »
Tak jsem na tom stejně i v případu:
Kód: Delphi [Vybrat]
  1. Image1.Picture.SaveToFile(GetSpecialFolderPath(CSIDL_DESKTOP, false));
Tak to snad hlasi nejakou chybu, ne? Kdyz to neumis zjistit jinak, tak si misto ukladani obrazku zkus na te ceste treba vytvorit soubr s danym jmenem treba funkci SysUtils.FileCreate a a v pripade chyby se podivej, co vraci GetLastError.

jenom tak z praku, nemělo by tam být něco jako
Kód: Delphi [Vybrat]
  1. Image1.Picture.SaveToFile(GetSpecialFolderPath(CSIDL_DESKTOP, false)+'/image.gif');

Podle mne ten GetSpecialFolderPath vrací cestu, chybí jméno souboru. Ale to tak tipuju. S tím / si nejsem jistý.
?
Embarcadero MVP - Czech republic

Offline Kukysh

  • Mladík
  • **
  • Příspěvků: 64
  • Karma: 1
    • Verze Delphi: Delphi 7, Delphi 10.3.3
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #19 kdy: 19-09-2012, 21:30:54 »
To pf1957:

Ano, vracelo to cestu, páč chybělo jméno ..., tipl si to správně, díky moc!
Stačilo:
Kód: Delphi [Vybrat]
  1. Image1.Picture.SaveToFile(IncludeTrailingPathDelimiter(GetSpecialFolderPath(CSIDL_DESKTOP))+'Foto1.gif');

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2668
  • Karma: 133
    • Verze Delphi: D2007, XE3, DX10
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #20 kdy: 19-09-2012, 22:07:56 »
Případy, kdy to nebude fungovat:
1. počítač s lokálním účtem a účtem v doméně. Pak cesta neplatí, protože jeden z účtů má přidaný ještě jméno počítače nebo jméno domény
2. poškozený profil - pak se vytváří náhradní profil s pořadovým číslem za jménem

Jeste mi to neda - nevyresi i tyhle dva problemy pouziti CSIDL resp. FOLDERID? Prece system vi s jakym uctem pracuje a kde ma na disku jeho profil.
A jak se jmenuje konkretni cesta by melo byt jedno, ne?

Offline Jan Fiala

  • Příspěvků: 49
  • Karma: 0
    • PSPad editor
Re:Uložení Gif za pomoci fce GetCurrentUserName
« Odpověď #21 kdy: 20-09-2012, 09:24:37 »
Případy, kdy to nebude fungovat:
1. počítač s lokálním účtem a účtem v doméně. Pak cesta neplatí, protože jeden z účtů má přidaný ještě jméno počítače nebo jméno domény
2. poškozený profil - pak se vytváří náhradní profil s pořadovým číslem za jménem

Jeste mi to neda - nevyresi i tyhle dva problemy pouziti CSIDL resp. FOLDERID? Prece system vi s jakym uctem pracuje a kde ma na disku jeho profil.
A jak se jmenuje konkretni cesta by melo byt jedno, ne?

Samozrejme vyresi (stejne jako vse ostatni). Ja jsem se jen snazil popsat pripady, kdy mu to nebude fungovat, pokud pujde natvrdo pres C:\Users\<jmeno>\