Re: [ASUA] Pytanie natury programistycznej

Autor: Piotr Grzybowski (merlin_at_narsil.asua.org.pl)
Data: Mon 05 Mar 2001 - 01:35:55 MET


On Sun, 4 Mar 2001, Przemyslaw Dobrowolski wrote:

> Od dwóch godzin męczę się z jednym problemem:
>
> w wielu miejscach używam funkcji
>
> HINI CfgOpen (PSZ szFilename)
> {
> return PrfOpenProfile (WinQueryAnchorBlock (HWND_DESKTOP),
> szFilename);
> }
>
> i funkcji:
>
> BOOL CfgClose (HINI hIniFile)
> {
> return PrfCloseProfile (hIniFile);
> }
>
> i... we wszystkich programu miejscach działa, oprócz jednego tasku (tak
> ma otwarty zainicjalizowany własny hab, bez nowego Anchor Blocka jest
> tak samo), gdzie (#define INIFILE "wcdcopy.ini" w prototypie ogólnym):
>
> hIni = CfgOpen (INIFILE);
>
> err=WinGetLastError(hab);
>
> if (err)
> {
> dprintf("BŁĄD %d, %d",HIUSHORT(err),LOUSHORT(err));
> }
>
> Zwrot jest następujący:
> BŁĄD 4, 5701
> Co oznacza:
> #define PMERR_INVALID_PARAMETER 0x1645
> #define SEVERITY_WARNING 0x0004
>
> Wszystko bym rozumiał, gdyby task o którym piszę nie działał od
> początku. Ale on działał z pewnością. Poza tym tak samo otwieram w
> wielu innych miejscach programu...
> Od razu mówię, że przeliczyłem ilości otwarć i zamyknięć w/w pliku i
> nigdzie nie jest on otwarty wiecej niz raz, co oznacza że w momencie
> kiedy go otwieram jest on na pewno _nie_ otwarty.
> Reasumując: Pomocy, bez wytłumaczenia błędu nie pójdę dalej!

 pierwsze wrazenie: sprawdz czy w tym tasku, w ktorym nie dziala
WinQueryAnchorBlock(HWND_DESKTOP) zwraca cos co ma sens.
 ten task jest threadem, ktorego parentem jest inny task, w ktorym
dziala - tak to jest?
 jeszcze jedno pytanie: czy jak zmienisz plik(nazwe), w tym threadzie w
ktorym nie dziala to dalej nie bedzie dzialac?

 bo ja widze dwie mozliwosci - albo z jakis przyczyn w tym threadzie nie
dziala WinQueryAnchorBlock, albo nie dziala PrfOpenProfile, pierwsze
moze nie dzialac z dziwnyhc przyczyn i roznych (mozesz sprawdzic czy
dziala) drugie moze nie dzialac dlatego ze plik jest jakos zablokowany
przez threada z ktorego feralnego threada otwierasz.
 to sa chyba kretynskie propozycje:)
 ale sprawdz koniecznie co sie wywala...
(
 HINI CfgOpen (PSZ szFilename)
 {
  HAB habhab; ULONG prfrc=0;
  habhab=WinQueryAnchorBlock(HWND_DESKTOP);
  // jest tu dobrze czy nie?
  // jak nie - to wiemy na czym stoimy
  prfrc=PrfOpenProfile (habhab,szFilename);
  // a tu jest dobrze?
  // a jak dac
  prfrc=PrfOpenProfile (habhab,"hejhej.ini"); //powiedzmy ze gdzies jest
                                              //ten plik
  return rc;
 }
)

 na razie tyle, zaraz sie glebiej zastanowie...
  (wyslij mi caly kod)

pg



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:30:32 MET DST