Newsgroup: it.hobby.scacchi
Titolo: Help per macro in Visual Basic!

Ho appena provato la macro in Visual Basic per far analizzare a Rebel
Tiger un file epd (il famoso ecm-sel!) a tempo fisso per posizione (1
minuto).
Purtroppo, quando inserisco il nome del file da analizzare nel box di
input e avvio la macro, mi viene visualizzato il messaggio "Errore in
lettura o scrittura" e la macro si blocca!
Visto che molti frequentatori di IHS conoscono il VB, vorrei un
piccolo aiuto per scoprire cos'e' che non va in questa macro.
Ecco il testo della macro:
----------------------------
'
' This script analyses a file with EPD positions.
'
' The script first asks for a input file. The output is in a new
' file with the same base name as the input file but with
' .out appended on the end.
'
'
Dim fso,epd,epdpos,epdout,gm,infile,outfile
infile = InputBox( "Enter the input EPD filename:" , "Input")
if infile <> "" then
  outfile = infile & ".out"
' Open the input and output files
'
  on error resume next
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set epd = fso.OpenTextFile( infile, 1) 
  Set outepd = fso.CreateTextFile(outfile, True) 
  if Err.Number = 0 then
' Load first position
'
    LoadPosition
  else
     MsgBox "Error reading or writing"
  end if
end if
Sub LoadPosition
    on error resume next
    while NOT epd.AtEndOfStream
        epdpos = epd.ReadLine
        outepd.WriteLine epdpos
        Set gm = Engine.Game
        gm.Position = epdpos
        Engine.Game = gm
        if Err.Number <> 0 then
             outepd.WriteLine "ERROR - Invalid position"
             Err.Clear
        else
             Engine.StartCompute 0
             Exit sub
        end if
    wend
    MsgBox "Test completed. Use the Stop command from the
Extra->Macros menu to stop further processing."
End Sub
' This event is triggered when the engine has completed the
'   calculation of the best move
Sub ENGINE_AsyncResult(score, var,  expectmove)
' Write result in output file
     outepd.WriteLine  var
' Load next position
     LoadPosition 
End Sub
--------------------------------
Grazie in anticipo!
Ivo

  Set outepd = fso.CreateTextFile(outfile, True)
che, ammesso che il tuo file sia "pippo.epd", cerca di creare un file
"pippo.epd.out" nella stessa directory del file originale; a questo punto se hai
sbagliato ad inserire il percorso del file di origine oppure se quest'ultimo e'
su un supporto in sola lettura viene generato l'errore.
Se stai usando i file epd da CD semplicemente copiali in una cartella qualunque
e dovrebbe funzionare; altrimenti, se vuoi lasciare i files al loro posto, puoi
modificare le prime righe dello script cosi:
'----- ORIGINALE
Dim fso,epd,epdpos,epdout,gm,infile,outfile
infile = InputBox( "Enter the input EPD filename:" , "Input")
if infile <> "" then
  outfile = infile & ".out"
'----- FINE ORIGINALE
'----- MODIFICATO
Dim fso,epd,epdpos,epdout,gm,infile,outfile,i
infile = InputBox( "Enter the input EPD filename:" , "Input")
if infile <> "" then
  i=InstrRev(infile,"\")
  outfile = "c:\" & Mid(infile,i+1) & ".out"
'----- FINE MODIFICATO
a questo punto quel "c:\" che vedi qui sopra puo' essere modificato con il
percorso che preferisci per ricevere il tuo output.
Ciao
--
   o   o
o / \ / \ o  Luca Dormio
  \ - - /    
ldo...@tin.it
   =====
FICS ID: LarsenB, LarsenVB(C)
LarsenVB Home: 
http://space.tin.it/clubnet/ludormio