|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
[VB6] Funzione Salva Annidata?
Allora il seguente codice funziona pero' io vorrei mettere l'ultima parte (che ho evidenziato in rosso) in un altra procedura richiamata all'interno della stessa form (quindi mi andrebbe anche bene una private sub) dato che la parte rossa deve essere eseguita identica da altri processi. Ho cercato di metterla in un altra procedura sia private su public nello stesso forum oppure in un file .BAS ma mi da bad file name:
Quote:
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
..UP
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: May 2006
Messaggi: 71
|
Quote:
...ma tu cosa hai provato a fare ? A definire una nuova routine, e semplicemente incollato il codice in rosso all'interno ? Se e' cosi', all'interno di questa nuova routine semplicemente NON e' definita la variabile lFile: devi ripetere la dichiarazione e l'assegnazione a FreeFile. (in questo caso appare evidente che tu NON usi la direttiva Option Explicit N.B.: ovviamente nell'intestazione della routine devi passare anche il nome del file come parametro... In definitiva: Codice:
Private Sub Scrivi2(strfile As String) Dim lFile As Long lFile = FreeFile ..........(codice rosso).......... End Sub P.S.: non entro nel merito di quell'orrida sequela di If..., oltretutto non postati col tag giusto, quindi perdendo l'indentazione e la possibilita' di...capirci qualcosa !!! |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
patch/file access error
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
Quote:
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: May 2006
Messaggi: 71
|
questo non l'ho mai sentito....
Quote:
Comunque, ARGUMENT NOT OPTIONAL vuol dire che NON hai passato un argomento obbligatorio. Quindi Clicksaver_Export va' invocata ripetendo il NOME del file da salvare/appendere, mi pareva ovvio data la definizione della routine... Toglimi una curiosita': stai scrivendo tu il programma, o stai facendo un copia/incolla di routine di cui non conosci bene il significato ?? |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
Si sto scrivendo io il tutto in base a quello che mi serve. Ho fatto come mi hai detto tu: ho fatto una nuova procedura nella stessa form e poi da un altra parte chiama 2 procedure una dietro l'altra e l'errore lo da alla riga quando va a richiamare la procedura nuova che mi hai suggerito tu
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: May 2006
Messaggi: 71
|
Quote:
P.S.: hai capito dove era l'errore ? Che mi dici dell'Option Explicit (menu Tools/Options, spunta Require Variable Declaration) ? Ne hai mai sentito parlare ? E' molto utile, e ti evita di impazzire col debug... |
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
Ho messo pure sta spunta ma continua a darmi i due errori poco prima a seconda di cosa scrivo. Devo rassegnarmi a scrivere tt il papiello rosso di continuo? Non capisco che devo fare
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
La parte rossa a momento viene ripetuta ogni volta quindi a lavoro finito quella parte rossa si ripetera' almeno 400 volte allungando a dismisura il codice del programma.
Quindi vorrei sapere sta benedetta procedura come va scritta ? La procedura chiamata prima di questa nuova rossa che nn so scrivere e' questa: Quote:
Quindi sarebbe: EnS_Health_Buffs PROCEDURA ROSSA
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: May 2006
Messaggi: 71
|
Stai facendo una confusione incredibile, parli di una cosa, poi di un'altra, non si capisce COME chiami 'sta benedetta procedura che non ti funziona...
Non mi e' possibile seguirti in tutto questo casino... dici "cosa devo fare ?"... ma ti rendi conto che io NON SO' neppure cosa stai facendo e di cosa stai parlando ? ... posso provare a darti una mano in un problema specifico, ma non posso aiutarti a fare un programma "taglia e cuci" come quello che stai rattoppando... "è come se non accettasse 2 procedure scritte in posizioni diverse" ...se hanno lo stesso nome, vorrei ben vedere !!! |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Prova a descrivere semplicemente l'operazione che vuoi eseguire. In generale, se vuoi spezzare una Private Sub ( che sta ad esempio sotto una Form ), la parte "rossa" andrebbe messa Public in un Modulo, facendo però attenzione che se ci sono variabili locali esterne, anch'esse andranno rese globali, ossia Public in un Modulo. Se quel codice funziona, e sono rispettate queste regole, deve funzionare anche una volta che è stato spezzato. Ciò di cui ci si deve preoccupare è il discorso logico. Se la parte "rossa" viene eseguita dall'esterno dell'oggetto ( Form ) in cui risiede la parte "nera", è ovvio che la mancata esecuzione di quest'ultima porterà ad errori. |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
Quote:
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 224
|
No asp. Il codice che ho postato e' tutto segna PUBLIC quindi nn funziona. Ho messo la parte rossa in un .bas public e nn va, ho messo la parte rossa in un altro procedura nello stesso form e nn va lo stesso. Suggerimenti?
__________________
CPU: INTEL Core i7 3770 Scheda Madre: Asus P8Z77-M Pro Ram: DIMM DDR3 Corsair 16GB/1600Mhz Vengeance [2x8GB] Scheda Video: nVidia Zotac GTX1060 6GB GDDR5 Scheda Audio: Integrata Realtek 5.1 Hard Disk: 1TB Western Digital [WD1002FAEX] Case: Enermax Midi OSTROG Alimentatore: Seasonic Focus PX-850W Masterizzatori: Asus DRW-24B5ST 24X |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Posso solo darti consigli in generale. Vedo troppe cose che mi fanno pensare che sia stato buttato giù frettolosamente, o che contenga dei copia/incolla "acritici"... Mi basta leggere una cosa come : Codice:
Dim a As String a = "AODIR::" & San_Opzioni.Combo1.Text & "" Che senso può avere mai concatenare una stringa vuota in quel modo ? Che senso ha quella sequela confusa di If-Else, quando nella condizione 'Vero' non si esegue niente ? E usare una Select Case ? Inoltre non è chiaro COSA vuoi fare, nè COME. L'unica scelta saggia è buttare giù tutto : fatti un'analisi precisa e chiara del problema che vuoi risolvere, e ricomincia da capo. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:11.




















