Path: csiph.com!news.fcku.it!aioe.org!.POSTED!not-for-mail From: carmelo Newsgroups: it.comp.lang.visual-basic Subject: Re: [VB6] errore di runtime 5 solo su win XP Date: Thu, 04 Feb 2016 17:49:58 +0100 Organization: Aioe.org NNTP Server Lines: 86 Message-ID: References: NNTP-Posting-Host: HaFydNTocIiQ6scjQz6+lQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: csiph.com it.comp.lang.visual-basic:18680 Il 04/02/2016 15:23, GbC ha scritto: > Il 04/02/2016 14:57, carmelo ha scritto: >> Private Type OPENFILENAME >> lStructSize As Long >> hwndOwner As Long >> hInstance As Long >> lpstrFilter As String >> lpstrCustomFilter As String >> nMaxCustFilter As Long >> nFilterIndex As Long >> lpstrFile As String >> nMaxFile As Long >> lpstrFileTitle As String >> nMaxFileTitle As Long >> lpstrInitialDir As String >> lpstrTitle As String >> flags As Long >> nFileOffset As Integer >> nFileExtension As Integer >> lpstrDefExt As String >> lCustData As Long >> lpfnHook As Long >> lpTemplateName As String >> End Type >> Private OFName As OPENFILENAME >> >> Dim FilePath As String >> FilePath = Left$(OFName.lpstrFile, OFName.nFileOffset - 1) >> >> Mi sapreste dire perchè la riga sopra, su Win XP mi da errore di runtime >> 5: chiamata di routine o argomento non valido. >> >> Mentre su Vista, Seven e win 8 funziona regolarmente. >> >> Carmelo > > > A) Metti un breakpoint prima dell'istruzione incriminata e controlli il > contenuto delle due stringhe. > > debug.print "lpstrFile|" & OFName.lpstrFile & "|" > debug.print "nFileOffset|" & OFName.nFileOffset & "|" > stop > ' riga esistente > FilePath = Left$(OFName.lpstrFile, OFName.nFileOffset - 1) > > B) In alternativa aggiungi una messagebox che mostri il contenuto delle > due stringhe, magari controllando con un parametro nella command-line se > vuoi visualizzare i messaggi o no. Può anche essere utile in altri casi. > > Setti una variabile globale booleana in un modulo .bas > > global myDebugMODE as boolean > > nel form di avvio (o quel che è) controlli se è stato attivato il debug, > che si attiverà indicando come parametro nella commandline la parola -debug > > if instr(1,command,"-debug",1) > 0 then myDebugMODE = true > > (lo so che si può fare meglio ma per ora va bene lo stesso) > > prima di eseguire la linea incriminata metti un > > if myDebugMODE = True then > MsgBox "lpstrFile|" & OFName.lpstrFile & "|" & vbnewline & _ > "nFileOffset|" & OFName.nFileOffset & "|" , _ > vbinformation, _ > "myDebugMODE: FilePath" > > end if > > ' riga esistente > FilePath = Left$(OFName.lpstrFile, OFName.nFileOffset - 1) > > > Così cosa è che genere quell'errore. > Ho provato cosi: Dim FilePath As String, iPos as Integer iPos = (OFName.nFileOffset - 1) ==== > questa riga da errore FilePath = Left$(OFName.lpstrFile, iPos) L'errore lo genera OFName.nFileOffset solo in win XP perchè? Carmelo