/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
For hurtigt... [VB6/scripting]
Fra : Jens Vestergaard


Dato : 20-08-02 17:51

Hejsa.
Skal sammentælle størrelsen af tre filer. Gør således:

Set fso = New FileSystemObject
totSize = fso.GetFile(myAppPath & "\logs\errlog.txt").Size
totSize = totSize + fso.GetFile(myAppPath & "\logs\ibout.txt").Size
totSize = totSize + fso.GetFile(myAppPath & "\logs\prgout.txt").Size

Når jeg singlestepper (F8) gennem linierne går det fint, men når koden kører
almindeligt, returnerer totSize 0. Som om fso ikke 'har tid' til at hente
filerne.

Hvis jeg gør således:

Dim fi as File
Set fso = New FileSystemObject
Set Fi = fso.GetFile(myAppPath & "\logs\errlog.txt")
totSize = fi.Size
Set fi = fso.GetFile(myAppPath & "\logs\ibout.txt")
totSize = totSize + fi.Size
Set fi = fso.GetFile(myAppPath & "\logs\prgout.txt")
totSize = totSize + fi.Size

Samme resultat: totSize = 0 ved normal afvikling, men korrekt med
singlestep.

Sidste forsøg....


Dim fi as File
Set fso = New FileSystemObject
Set Fi = fso.GetFile(myAppPath & "\logs\errlog.txt")
DoEvents
totSize = fi.Size
Set fi = fso.GetFile(myAppPath & "\logs\ibout.txt")
DoEvents
totSize = totSize + fi.Size
Set fi = fso.GetFile(myAppPath & "\logs\prgout.txt")
DoEvents
totSize = totSize + fi.Size

....og SÅ virker det. Skal FileSystemObject virkelig have så lang 'tid' til
at hente egenskaberne på en fil?

Eller har jeg overset noget?

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



 
 
Harald Staff (21-08-2002)
Kommentar
Fra : Harald Staff


Dato : 21-08-02 01:30

Hei Jens

Glem FSO, bruk FileLen:

Sub test()
MsgBox FileLen("C:\temp\02.xls") + _
FileLen("C:\temp\test1.htm") + _
FileLen("C:\temp\test2.htm")
End Sub

HTH. Beste hilsen Harald

"Jens Vestergaard" <j@railsoft.dk> wrote in message
news:3d627358$0$94808$edfadb0f@dspool01.news.tele.dk...
> Hejsa.
> Skal sammentælle størrelsen af tre filer. Gør således:
>
> Set fso = New FileSystemObject
> totSize = fso.GetFile(myAppPath & "\logs\errlog.txt").Size
> totSize = totSize + fso.GetFile(myAppPath & "\logs\ibout.txt").Size
> totSize = totSize + fso.GetFile(myAppPath & "\logs\prgout.txt").Size
>
> Når jeg singlestepper (F8) gennem linierne går det fint, men når koden
kører
> almindeligt, returnerer totSize 0. Som om fso ikke 'har tid' til at hente
> filerne.
>
> Hvis jeg gør således:
>
> Dim fi as File
> Set fso = New FileSystemObject
> Set Fi = fso.GetFile(myAppPath & "\logs\errlog.txt")
> totSize = fi.Size
> Set fi = fso.GetFile(myAppPath & "\logs\ibout.txt")
> totSize = totSize + fi.Size
> Set fi = fso.GetFile(myAppPath & "\logs\prgout.txt")
> totSize = totSize + fi.Size
>
> Samme resultat: totSize = 0 ved normal afvikling, men korrekt med
> singlestep.
>
> Sidste forsøg....
>
>
> Dim fi as File
> Set fso = New FileSystemObject
> Set Fi = fso.GetFile(myAppPath & "\logs\errlog.txt")
> DoEvents
> totSize = fi.Size
> Set fi = fso.GetFile(myAppPath & "\logs\ibout.txt")
> DoEvents
> totSize = totSize + fi.Size
> Set fi = fso.GetFile(myAppPath & "\logs\prgout.txt")
> DoEvents
> totSize = totSize + fi.Size
>
> ...og SÅ virker det. Skal FileSystemObject virkelig have så lang 'tid' til
> at hente egenskaberne på en fil?
>
> Eller har jeg overset noget?
>
> --
> mvh
> Jens Vestergaard
> www.railsoft.dk
> --------
> Indsæt v før snablen
>
>



Jens Vestergaard (21-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 21-08-02 06:55

"Harald Staff" <harald.staff@eunet.no> skrev i en meddelelse
news:ajumn0$mmk$1@oslo-nntp.eunet.no...
> Hei Jens
>
> Glem FSO, bruk FileLen:
> Sub test()
> MsgBox FileLen("C:\temp\02.xls") + _
> FileLen("C:\temp\test1.htm") + _
> FileLen("C:\temp\test2.htm")
> End Sub

Det er jeg helt med på - spørgsmålet var, om FSO vitterlig ER så langsom, at
den ikke kan følge med i alm. kode.

FileLen er i øvrigt ikke hurtigere - den kan åbanbart bare selv finde ud af
at 'vente', til den har fået en værdi.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (21-08-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 21-08-02 22:25

Jens Vestergaard skrev:
> Set fso = New FileSystemObject
> totSize = fso.GetFile(myAppPath & "\logs\errlog.txt").Size
> totSize = totSize + fso.GetFile(myAppPath & "\logs\ibout.txt").Size
> totSize = totSize + fso.GetFile(myAppPath & "\logs\prgout.txt").Size
>
> Når jeg singlestepper (F8) gennem linierne går det fint, men når
koden kører
> almindeligt, returnerer totSize 0. Som om fso ikke 'har tid' til at
hente
> filerne.

Har prøvet at genskabe problemet, men kan ikke.

Hvilken Service Pack har du på din Visual Basic (Help, About, står i
parentes i første tekst-linie)?

-------
Tomas


Jens Vestergaard (21-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 21-08-02 22:38


"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ak10e3$1nde$1@news.cybercity.dk...
> Har prøvet at genskabe problemet, men kan ikke.
>
> Hvilken Service Pack har du på din Visual Basic (Help, About, står i
> parentes i første tekst-linie)?


VB6 Pro, SP5 på W2K Pro DK, 1 GHz, 256 MB RAM

Det burde vel ikke fejle noget.

I øvrigt har jeg lige konstateret, at FileLen() lider af *præcis* samme
skavank.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Harald Staff (21-08-2002)
Kommentar
Fra : Harald Staff


Dato : 21-08-02 22:52

"Jens Vestergaard" <j@railsoft.dk> wrote in message
news:3d6407fd$0$64868$edfadb0f@dspool01.news.tele.dk...
> Det burde vel ikke fejle noget.
>
> I øvrigt har jeg lige konstateret, at FileLen() lider af *præcis* samme
> skavank.

Umulig. Show me your code,my friend.
Beste hilsen Harald



Jens Vestergaard (22-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 22-08-02 07:02

"Harald Staff" <harald.staff@eunet.no> skrev i en meddelelse
news:ak11r1$628$1@oslo-nntp.eunet.no...
> "Jens Vestergaard" <j@railsoft.dk> wrote in message
> news:3d6407fd$0$64868$edfadb0f@dspool01.news.tele.dk...
> > I øvrigt har jeg lige konstateret, at FileLen() lider af *præcis* samme
> > skavank.
>
> Umulig. Show me your code,my friend.

Jeg har forsket lidt i det og måske fundet årsagen (=Single/Long) - omend
jeg ikke helt forstår den. Og ikke helt forstår, hvorfor As Single virker,
når det går langsomt, men ikke ellers. Når jeg oprindeligt havde deklareret
totSize As Single, var det fordi jeg skulle komma-regne lidt på det.

1) Virker... tilsyneladende (!)
Dim totSize As Long
totSize = FileLen(myAppPath & "\logs\errlog.txt")
totSize = totSize + FileLen(myAppPath & "\logs\ibout.txt")
totSize = totSize + FileLen(myAppPath & "\logs\prgout.txt")

2) Virker IKKE ved alm kode, men er OK ved singlestep (!):
Dim totSize As Single
totSize = FileLen(myAppPath & "\logs\errlog.txt")
totSize = totSize + FileLen(myAppPath & "\logs\ibout.txt")
totSize = totSize + FileLen(myAppPath & "\logs\prgout.txt")

3) Virker:
Dim totSize As Single
totSize = FileLen(myAppPath & "\logs\errlog.txt")
DoEvents
totSize = totSize + FileLen(myAppPath & "\logs\ibout.txt")
DoEvents
totSize = totSize + FileLen(myAppPath & "\logs\prgout.txt")
DoEvents



--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (22-08-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 22-08-02 07:35

Jens Vestergaard skrev:
> Jeg har forsket lidt i det og måske fundet årsagen (=Single/Long) -
omend
> jeg ikke helt forstår den. Og ikke helt forstår, hvorfor As Single
virker,
> når det går langsomt, men ikke ellers. Når jeg oprindeligt havde
deklareret
> totSize As Single, var det fordi jeg skulle komma-regne lidt på det.

Er der forskel på om du starter projektet med F5, Ctrl-F5 (som ofte er
bedre at bruge) eller som en kompileret EXE-fil?

Er det de samme filer, som du checker længden på? Det er ikke noget
med at filerne dannes at dit program, eller af en proces som startes
af dit program, og som ikke når at blive færdig med mindre du
single-stepper dig igennem?

Er du sikker på at der ikke er en "\" i slutningen af myAppPath? (Der
BURDE er godt nok komme en fejl hvis filen ikke findes)
Du bruger vel forhåbentlig ikke On Error Resume Next???

Hvilke størrelser har hver af filerne (hvis vi andre skal prøve at
genskabe problemet)?

-------
Tomas


Jens Vestergaard (22-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 22-08-02 08:11

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ak20ln$2j5q$1@news.cybercity.dk...
> Er der forskel på om du starter projektet med F5, Ctrl-F5 (som ofte er
> bedre at bruge) eller som en kompileret EXE-fil?

Nope.

> Er det de samme filer, som du checker længden på? Det er ikke noget
> med at filerne dannes at dit program, eller af en proces som startes
> af dit program, og som ikke når at blive færdig med mindre du
> single-stepper dig igennem?

Filerne dannes godt nok af programmet. Jeg har en clsLogbog, som danner dem
i Class_Initialize, men jeg kan ikke 'komme til' at køre den kode, vi taler
om, før Set Log = New clsLogbog er udført.

> Er du sikker på at der ikke er en "\" i slutningen af myAppPath? (Der
> BURDE er godt nok komme en fejl hvis filen ikke findes)
> Du bruger vel forhåbentlig ikke On Error Resume Next???

Jeg bruger som standard i alle mine apps myAppPath netop for at sikre, at
den er ens hver gang - uden "\" i slutningen. Og den del virker fint....

> Hvilke størrelser har hver af filerne (hvis vi andre skal prøve at
> genskabe problemet)?

Det er, som måske gættet, log-filer, så størrelsen er varrierende alt efter,
hvornår i app'ens oppetid, koden bliver udført. Allerførst er de jo ikke på
mere end et par linier hver, men der vil altid være mindst én linie, nemlig
oplysningen om, hvnår de er dannet.

I den pågældende app kan der dannes en fejlrapport, som mailes af app'en til
mig/min support, hvis brugeren godkender det. I godkendelsen indgår en
oplysning om, hvor stor mængde data, man i givet fald vil skulle sende (de
tre log-filer, der attaches fejlrapporten) - en service overfor brugere, der
måske sidder på en langsom modem-linie. Brugeren kan også manuelt danne
denne fejl-rapport.

mvh
Jens V


--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (22-08-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 22-08-02 18:08

Jens Vestergaard skrev:
> Filerne dannes godt nok af programmet. Jeg har en clsLogbog, som
danner dem
> i Class_Initialize, men jeg kan ikke 'komme til' at køre den kode,
vi taler
> om, før Set Log = New clsLogbog er udført.

Er du sikker på at filerne ER lukket (Close #filnummer) når du checker
længden?

-------
Tomas


Jens Vestergaard (22-08-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 22-08-02 19:31

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ak35ph$u64$1@news.cybercity.dk...
> Jens Vestergaard skrev:
> > Filerne dannes godt nok af programmet. Jeg har en clsLogbog, som
> danner dem
> > i Class_Initialize, men jeg kan ikke 'komme til' at køre den kode,
> vi taler
> > om, før Set Log = New clsLogbog er udført.
>
> Er du sikker på at filerne ER lukket (Close #filnummer) når du checker
> længden?

Jep - men selv om det modsatte skulle være tilfældet, forklarer det jo ikke,
at FileLen() virker, når der single-steppes.

Jeg betragter det som et af flere uløste mysterier - som jeg har en
work-around til, og som derfor ikke betyder det store... lige nu, hvor
app'ens deadline nærmer sig - så vil jeg studere det nøjere senere.

Men derfor er alle input da fortsat velkomne omend ikke akut nødvendige



--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Tomas Christiansen (21-08-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 21-08-02 22:50

Jens Vestergaard skrev:
> I øvrigt har jeg lige konstateret, at FileLen() lider af *præcis*
samme
> skavank.

Det lyder som om der er noget *virkelig* galt med dit system!

-------
Tomas


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste