Šta je novo?

SHGetFolderPath i access violation

hwfanatic

Čuven
Učlanjen(a)
13.02.2002
Poruke
659
Poena
630
Unit SHFolder.pas sadrzi neke osnovne funkcije za konverziju CSIDL broja u string, i ovo ok radi u samom programu tj. SHGetFolderPath vraca S_OK i string, kako valja. Medjutim, problem iskrsava kada se aplikacija koja koristi ovu funkciju zavrsava, jer dolazi do access prekrsaja iz meni nepoznatog razloga. Znaci, stavim funkciju pod comment, i program opet radi. Da li neko ima bilo kakvu ideju o cemu se radi? Znate li neki drugi nacin za dobijanje stringova sistemskih foldera?
 
Koliko mi se cini, radis u Delphi-ju.
Probaj neku od windows sistemskih poziva iz ShellApi datoteke, tipa GetWindowsDir.
 
Ali meni ne treba Windows-ov direktorijum...
 
Ja se izvinjavam za dupli post, ali mi se cini neverovatnim da sam prvi covek na svetu kome treba da locira neki sistemski direktorijum u toku izvrsavanja programa, pa u tom svetlu bi molio nekog ko je sa tim vec ima posla da mi pomogne. :)

Uopste me mora da se koristi spomenuta funkcija...
 
hwfanatic je napisao(la):
Ja se izvinjavam za dupli post, ali mi se cini neverovatnim da sam prvi covek na svetu kome treba da locira neki sistemski direktorijum u toku izvrsavanja programa, pa u tom svetlu bi molio nekog ko je sa tim vec ima posla da mi pomogne. :)

Uopste me mora da se koristi spomenuta funkcija...
Otvori dos prompt, kucaj set, i pogledaj da li neka promenljiva sadrzi "sistemski direktorijum" koji ti je potreban, ako je odgovor da - primeni GetEnvironmentVariable() (winbase.h/win32api)
 
koliko znam takva greska se javlja uvek kad funkcija ocekuje pokazivac na neki record ili objekat koji treba kreirati.

Nasao sam sta ti treba u JediVCL biblioteci, ali ima mnogo teksta tako da neznam sta da ti saljem, skini sa neta celu arhivu, naci ces tamo jos gomilu stvari.

Adresa je http://www.delphi-jedi.org/
Velicina je oko 7MB
 
Post Glupog Zmaja me je inspirisao da malo zagrebem po razlogu zbog koga se javlja prekrsaj, i otrkio sam sledece... Umesto pointera na char (PChar), ipak je bolje proslediti funkciji pointer na staticku array of char strukturu. Efekat je isti, ali se ovog puta ne javlja prekrsaj. Eto, uspeo sam, mada mi jos uvek nije jasno tacno kako... :trust:

10x svima

Btw, ako se iko drugi bude razmisljao da iskoristi SHGetFolderPath, ja bi mu preporucio da radije koristi SHGetSpecialFolderPath. Ova druga funkcija vraca boolean vrednost, a izvedena je is shell32.dll biblioteke, radje nego iz nestandardne shfolder.dll koju koristi prva funkcija... To sam otkrio usput.
 
Nazad
Vrh Dno