Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

230 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

28 maart 2024, 21:41:20

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Error "Unknown"  (gelezen 24319 keer)

0 leden en 1 gast bekijken dit topic.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Error "Unknown"
« Gepost op: 25 februari 2010, 01:23:04 »
Ik gebruik het volgende stukje code in Form_Load van het hoofdformulier:
'Verwijderen oude logbestanden.
MyPath = frmInvestor.ext(App.Path) & "LOG\"
MyFile = Dir(MyPath & "*.*")
Dim filename As String
filename = MyPath & MyFile
Do While MyFile <> ""
    Aanroep2 = "ControleKoersBestanden"
    If Left$(MyFile, 8) <> BerekendeDatum And Left$(Right$(MyFile, 7), 3) = "LOG" Then
        If MyFile <> "master.fqr" Then
            Kill filename
        End If
    Else
        Aanroep2 = ""
        CloseFile (filename)
    End If
Loop
Wanneer dit stukje code wordt uitgevoerd, krijg ik de fout "Unknown". Wat is er fout aan deze code?
 

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Error "Unknown"
« Reactie #1 Gepost op: 25 februari 2010, 19:46:30 »
Dag Jan,
 
Je voert dit uit tijdens het Form_Load event, mogelijk levert frmInvestor.ext(App.Path) & "LOG\" dan een lege waarde op.
Heb je de debugger al eens aangezet en de waarden van de variabelen die je gebruikt gecontroleerd op hun inhoud?
 
Met een muisklik een breakpoint aanzetten bij de eerste regel van de code en het programma starten. Bij het breakpoint aangekomen met F8 stap voor stap door de code wandelen. Mbv. View > Locals de van toepassing zijnde variabelen controleren op inhoud. Je zou de fout zo snel moeten kunnen vinden.
Michel Uphoff
Homepage

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #2 Gepost op: 25 februari 2010, 22:27:05 »
Hoi Jan,

Citaat
Wat is er fout aan deze code?
Een opmerking vooraf, plaats programma-code tussen coderegels, zie de knop # boven de berichten-editor. Dat voorkomt code-verminking in dit forum, zie de smiley in je 1e bericht.

Deze code komt in een oneindige lus terecht, afhankelijk van hoe de error-afhandeling gebeurt.

Uitgaande van de commentaarregel wil je 1 of meerdere logbestanden wissen.
Als MyFile een bestandsnaam is in de syntax yyyyyyyyLOGzzzz wordt geprobeerd het bestand te wissen. (yyyyyyyy = BerekendeDatum, zzzz kan vanalles zijn)
Als MyFile iets anders is wordt CloseFile (filename) aangeroepen, geen idee wat daar gebeurt.
In beide gevallen wordt daarna bovenstaande opnieuw doorlopen met dezelfde waarde voor MyFile.

Wat wil je precies bereiken?


groeten, Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #3 Gepost op: 26 februari 2010, 11:46:30 »
Als ik de code met F8 doorloop gaat de If goed, pas als hij in de Elsetak komt krijg ik na CloseFile, dus in MyFile = Dir, de foutmelding. Als ik mij goed herinner was het foutnummer 18.
BerekendeDatum kan alleen maar de datum van vandaag bevatten en is hiervoor berekend. Dat logbestand mag namelijk niet verwijderd worden, alleen de oude logbestanden moeten verwijderd worden om te voorkomen dat de map LOG een hoeveelheid waardeloze bestanden bevat.
De CloseFile dient om het logbestand van vandaag (= BerekendeDatum) te sluiten en er verder niets mee te doen.
Is het misschien zo dat dit bestand niet geopend is? Dat lijkt mij onlogisch, omdat alleen gekken kan worden of aan de IF-voorwaarden voldaan is als het bestand geopend is, of praat ik nu onzin?

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Error "Unknown"
« Reactie #4 Gepost op: 26 februari 2010, 13:08:11 »
Dag Jan,
 
Met het opvragen van een lijst van bestanden, noch met een kill opdracht worden bestanden geopend. Dus hoef je ze ook niet te sluiten.
 
Ik begrijp dat je alle .log bestanden in een bepaalde map wilt deleten behalve degene met de datum van vandaag in de bestandsnaam?
 
Je zou dan ook het actuele log bestand tijdelijk kunnen renamen bijvoorbeeld in Berekendedatum.bak, en met kill *.log alles verwijderen, en daarna berekendedatum.bak hernoemen. Is een stuk korter en overzichtelijker.
 
Je moet er wel zeker van zijn dat er altijd een berekendedatum.log is. Is dat niet zo, dan zal je daar eerst op moeten testen of een on error resume next statement opnemen. Verder levert app.path het pad naar de applicatie op zonder de "\". In jouw code zie ik die "\" niet. De inhoud van de variable MyPath is inderdaad wat je bedoelt? Als ik het goed zie levert mypath in jouw geval namenlijk X:\applicatiepadLOG\ op ipv X:\applicatiepad\LOG\
 
Kwestie van inhoud van de variabelen tijdens het debuggen even controleren als aangegeven.
 
« Laatst bewerkt op: 26 februari 2010, 13:13:29 door Michel Uphoff »
Michel Uphoff
Homepage

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #5 Gepost op: 26 februari 2010, 20:15:08 »
Hoi Jan,

Citaat
Als ik de code met F8 doorloop gaat de If goed, pas als hij in de Elsetak komt krijg ik na CloseFile, dus in MyFile = Dir, de foutmelding.
MyFile = Dir zie ik nergens in bericht #1. Vergeten te kopiëren?. In dit geval is dat een belangrijke regel.

Wanneer wordt dit opruimen doorlopen? Na een muisklik, bij programma-start of op bepaalde tijden, er vanuit gaande dat je programma 24 uur per dag draait.

Citaat
De CloseFile dient om het logbestand van vandaag (= BerekendeDatum) te sluiten en er verder niets mee te doen.
Die logica kan ik niet volgen, Je zegt eerder dat het logbestand van vandaag niet gewist mag worden, maar je sluit het bestand wel. Dat roept verwarring op en onlogische code.

Hieronder een voorbeeld sub die de logbestanden wist:

Sub RemoveLogFiles()
'Verwijderen oude logbestanden behalve van 'BerekendeDatum'.
Dim MyPath$, MyFile$
Dim etxt$, filename$

On Error GoTo errhandle

   Aanroep2 = "ControleKoersBestanden"
   MyPath = ext(App.Path) & "LOG\"
   MyFile = Dir(MyPath & "*.*")
   Do While MyFile <> ""
       If Left$(MyFile, 8) <> BerekendeDatum And Left$(Right$(MyFile, 7), 3) = "LOG" Then
          Kill MyPath & MyFile
       End If
       MyFile = Dir
   Loop
   Aanroep2 = ""

errexit:
   Exit Sub
   
errhandle:
   etxt = Err.Number & ":" & Err.Description & " in RemoveLogFiles."
   MsgBox etxt
   Resume errexit
End Sub


groeten, Peter

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #6 Gepost op: 26 februari 2010, 20:18:07 »
Hoi Michel,

Citaat
Verder levert app.path het pad naar de applicatie op zonder de "\". In jouw code zie ik die "\" niet.
Daarvoor zorgt waarschijnlijk de zelfgemaakte functie ext in formulier frmInvestor.


Peter

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Error "Unknown"
« Reactie #7 Gepost op: 26 februari 2010, 20:59:49 »
Hoi Peter,
 
Citaat
zelfgemaakte functie ext
Zou kunnen, kan ik niet controleren. De opruimfunctie wordt gestart bij het load event van het main form, dus de actuele log zal hoogstwaarschijnlijk niet in gebruik zijn.
 
Overigens zou ik er voor gekozen hebben de actuele logfile even te stallen en met kill *.log de boel op te ruimen. Kan in een paar regeltjes code, iets in de geest van:
 
name App.Path & "\LOG\" & Vandaag & ".log" as App.Path & "\LOG\" & Vandaag & ".bak"
Kill App.Path & "\LOG\*.log"
name App.Path & "LOG\" & Vandaag & ".bak" as App.Path & "\LOG\" & Vandaag & ".log"
Michel Uphoff
Homepage

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #8 Gepost op: 26 februari 2010, 23:42:04 »
Citaat
Overigens zou ik er voor gekozen hebben de actuele logfile even te stallen en met kill *.log de boel op te ruimen.
Tja, in bericht #3 gaf ik al aan dat de bestandsnamen waarschjnlijk niet eindigen met de extensie ".log". De hoofdletters "LOG" staan ergens in de naam, mogelijk ook in de extensie maar dat is niet bekent.

Afhankelijk van waar en hoe de opruimactie gestart wordt zijn er inderdaad diverse mogelijkheden.


groeten, Peter

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Error "Unknown"
« Reactie #9 Gepost op: 27 februari 2010, 00:13:04 »
Hoi Peter,
 
Inderdaad zou het ook om een filenaam in de vorm *.*LOGxxxx  of *LOGxxxx kunnen gaan, dan wordt het wat lastiger maar misschien is er ook dan met eenvoudige wildcards uit te komen. Jan zal ons dan moeten voorzien van de opbouw van de logbestand namen.
Michel Uphoff
Homepage

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #10 Gepost op: 27 februari 2010, 02:10:51 »
Michel en Peter,
De opbouw van de naam van de logbestanden is bijv. voor vandaag 20100226LOG.prn.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #11 Gepost op: 27 februari 2010, 02:22:11 »
Hoi Peter,
De regel CloseFile had ik al weg gehaald, maar of de foutmelding nu verdwenen is  weet ik nog niet omdat ik het (zie Freeze van VB6.0) nog niet kan testen.
Citaat:
"Op een legale manier is het niet te downloaden"
Overigens: mogelijk ben ik erin geslaagd een originele box van Visual Studio 6.0 te kopen. Ik heb vandaag bericht ontvangen van de douane dat het wordt ingeklaard. Zodra ik het binnen heb en heb gecontroleerd zal ik het melden. Een verklaring van echtheid en legaliteit heb ik al binnen.

Offline Michel Uphoff

  • Wizop
  • *****
  • Berichten: 1.816
  • Geslacht: Man
    • Tentoonstelling
Re: Error "Unknown"
« Reactie #12 Gepost op: 27 februari 2010, 13:36:47 »
Dag Jan,
 
Citaat
20100226LOG.prn
Als (op het actuele bestand na) alle .prn bestanden weg mogen, dan kan je dus eenvoudig na het tijdelijk hernoemen van het actuele bestand alle prn bestanden wissen.
Zijn er andere .prn bestandjes die niet weg mogen dan zou je het via kill *LOG.prn op kunnen lossen.
Omdat  het bij een load event van het main form gebeurt waardoor de actuele log niet in gebruik kan zijn en er ook niets erstigs kan gebeuren als het actuele prn of de te wissen prn bestanden niet bestaan kan je in dit geval met een quick and dirty on error resume next voor deze sub als foutafvang af, bijvoorbeeld:
 
sub (WisLogs)
on error resume next
name App.Path & "\LOG\" & Vandaag & "LOG.prn" as App.Path & "\LOG\" & Vandaag & "LOG.bak"
Kill App.Path & "\LOG\*LOG.prn"
name App.Path & "\LOG\" & Vandaag & "LOG.bak" as App.Path & "\LOG\" & Vandaag & "LOG.prn"

end Sub
 
« Laatst bewerkt op: 27 februari 2010, 14:00:26 door Michel Uphoff »
Michel Uphoff
Homepage

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #13 Gepost op: 6 maart 2010, 00:47:49 »
Peter,
De hierboven door jou gegeven code geeft bij mij dezelfde fout "Unknown".
Michel,
Het bestand dat niet verwijderd moet worden een andere suffix geven, de overige bestanden verwijderen en het renamed bestand weer zijn oude naam terug geven lijkt te helpen. Wel moet er wat extra code aan besteed worden voor de verschillende voorkomende situaties. Het hangt er namelijk van af wanneer je het programma start en wat er op dat moment in de map LOG staat. 
Overigens, beide bedankt voor de gegeven respons.

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: Error "Unknown"
« Reactie #14 Gepost op: 6 maart 2010, 01:17:45 »
Hoi Jan,

Citaat
door jou gegeven code geeft bij mij dezelfde fout "Unknown".
OK, vervang de Sub RemoveLogFiles() door de code hieronder. Er zijn wat meldingen toegevoegd om te achterhalen wanneer die melding "Unknown" nu verschijnt. In welke volgorde zie je de teksten verschijnen en waartussen komt dan de melding "Unknown."?
Kun je van die melding eens een screenshot maken en hier posten? Ik ben zeer benieuwd.


Sub RemoveLogFiles()
'Verwijderen oude logbestanden behalve van 'BerekendeDatum'.
Dim MyPath$, MyFile$
Dim etxt$, filename$

On Error GoTo errhandle

   MsgBox "RemoveLogFiles Start"
   Aanroep2 = "ControleKoersBestanden"
   MyPath = ext(App.Path) & "LOG\"
   MyFile = Dir(MyPath & "*.*")
   Do While MyFile <> ""
       If Left$(MyFile, 8) <> BerekendeDatum And Left$(Right$(MyFile, 7), 3) = "LOG" Then
          Kill MyPath & MyFile
       End If
       MyFile = Dir
   Loop
   Aanroep2 = ""
   MsgBox "RemoveLogFiles Klaar"

errexit:
   MsgBox "RemoveLogFiles Einde"
   Exit Sub
   
errhandle:
   etxt = Err.Number & ":" & Err.Description & " in RemoveLogFiles."
   MsgBox etxt
   Resume errexit
End Sub


Peter