Avatar billede dmk Nybegynder
22. december 2004 - 12:01 Der er 3 kommentarer og
1 løsning

IFilter cleanup

Jeg har lidt problemer med at bruge IFilter komponenten i Windows.

Når man har loaded sit filter (LoadIFilter) og løbet al teksten igennem, kan jeg ikke finde nogen måde at frigive filen igen. Der er en release funktion på IUnknown interfacet, men der ser ikke ud til at ske noget ved at kalde den.

Jeg prøver at slette filen fra mit program efter at have lavet et IFilter på den, og det fejler da filen er låst. Der må være en filehandle inde i maven på et IFilter som skal lukkes eller noget?

Jeg foretager mig noget i stil med (pseudo):


IFilter* Filter=NULL;
LoadIFilter("c:\\somefile.doc", Filter);
Filter->Init();
Filter->GetChunk();
Filter->GetText();
...


Herefter forsøger jeg at slette filen, og den går ikke. Jeg har prøvet:

delete Filter;

Men det får mit program til at crashe. Release crasher ikke, men ændrer ikke på at filen er låst.

Any ideas?


/DMK
Avatar billede jpk Nybegynder
23. december 2004 - 09:01 #1
Hvis jeg kører denne kode, kan jeg godt slette filen EFTER jeg har kaldt Release.
Prøv evt. at se hvad Release returnerer, det er nemlig det antal referencer der er til objektet og skal være 0 (nul) før objektet frigives.

IFilter* Filter=NULL;
HRESULT hr = LoadIFilter(L"c:\\a.doc", NULL, (void**)&Filter);
ULONG pdwFlags;
hr = Filter->Init(IFILTER_INIT_INDEXING_ONLY, 0, NULL, &pdwFlags);
// Her kan jeg IKKE slette a.doc
ULONG count = Filter->Release();
// Her KAN jeg slette a.doc
Avatar billede dmk Nybegynder
29. december 2004 - 09:35 #2
Hej jpk

Yep, jeg har lidt røde øre nu, for jeg kan faktisk også... Jeg fik bare lige lavet en rigtig sjuske-fejl, men nu kører det.

Kender du i øvrigt en masse til IFilter? Jeg har haft rigtig store problemer med at finde noget dokumentation og nogle eksempler der kunne sætte mig i gang. Det er ikke nemt når det eneste man har, er navnet "IFilter"...

Pointene er dine, hvis du poster et svar.

/DMK
Avatar billede jpk Nybegynder
30. december 2004 - 16:21 #3
Hej igen

Desværre kender jeg intet til IFilter-komponenten, jeg lavede kun eksemplet p.g.a. dit spørgsmål...
Og du har ganske ret - der er ikke megen information om emnet!

Hvis der er noget specifikt du er i tvivl om, kan du da prøve at poste det her, så skal jeg se om jeg kan hjælpe.
Avatar billede dmk Nybegynder
18. januar 2005 - 12:23 #4
Whoups, der gik lige lidt lang tid!

Du får pointene, og så må jeg jo oprette nye spørgsmål hvis jeg finder på noget konkret at spørge om :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester