22. januar 2006 - 20:15Der er
11 kommentarer og 1 løsning
Fil-dialogboks
Jeg har en TDialogBox i min app (BCB). I en mappe ligger ca. 4000 filer, men forsøger man at åbne flere end ca. 900, kommer de sidste ikke med - dvs. at OpenDialog->Files->Count altid returnerer ca. 900, selvom det faktiske tal er derover. Hvorfor?
Og er der nogen, der kan sige mig, hvordan der konstrueres en dialogboks, hvor der ikke vælges filer men derimod mapper?
Løkken løber altså kun fra 0-900. I andre tilfælde kan den dog løbe flere gange, men den tager altid kun 1/3 eller 1/4 af filerne, hvis der tilføjes "mange".
kan du sætte dit filer til at vise alle filer og derefter vælge alle filer, hvad er count så?
Potentiel fejl (men har ikke noget med din count at gøre) path kan være ugyldig i anden linie: path = OpenDialog_Files->Files->Strings[i].c_str(); ListBox_Files->Items->AddObject(getfilename(path).c_str(), new listitem(path));
enten skriv hele OpenDialog_Files->Files->Strings[i].c_str() ind i anden linie eller alloker plads nok til path og strcpy den. c_str er potentiel farlig at bruge.
Jeg tror at problemet er at Builder "kun" afsætter ca. 64k bytes til at holde alle filnavne + stien. Så antallet af filer du kan vælge vil sansynligvis afhænge af længden på filnavnene.
Win32Api funktionen til at hente filnavne har så vidt jeg ved ikke denne begrænsning. Den hedder GetOpenFileName
Jeg prøvede at teste lidt på længden af de samlede filnavne, men jeg kunne ikke lige se nogen logik i resultaterne. Jeg fik i stedet mappebrowseren til at fungere, så det er egentlig endnu bedre.
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.