Newsgroup: it.comp.lang.visual-basic
Titolo: fermare il programma

Salve, mi servirebbe sapere, per favore, come faccio a fermare il
programma, ma non chiuderlo come si fa nell'istruzione end.
Io ho un file sequenziale da dove leggo i record, metto il testo in una
text box, poi devo fermare il loop del while con cui leggo i dati dal
file, perchč se no mi fa vedere in un attimo tutto il file, mentre io devo
vedere il primo record, il programma attende che io faccia qualcosa, poi
mi fa vedere il secondo e cosě via.
 grazie
 sniper Wolf
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 mi fa vedere il secondo e cosě via.
Semplice: non leggi a loop ;-)
-- 
ciao, hal

  sniper Wolf
Come già detto da Hel, non usare un ciclo.
Se ogni passaggio dipende da alcuni eventi, crea una funzione (o più
probabilmente due) che risponde a quegli eventi e non, come hai fatto, una
che gira per conto suo.
in pratica al posto di fare
dim daniel as danielSan
while not miagi.isDead
 daniel.mattiLaCera
 daniel.togliLaCera
wend
fai così:
sub on_miagi_bacchettata
 daniel.mattiLaCera
 daniel.togliLaCera
end sub
ovviamente 
dovrai inizializzare qualcosa prima di mettere l'operatore in grado di
scatenare eventi (nell'esempio "dim daniel as danielSan").
termoPilucco


 Come già detto da Hel, non usare un ciclo.
ops intendevo hal1961 :)


 Sniper Wolf wrote:


E come faccio a caricare un file sequenziale, mettendo il codice in un
textbox e il testo in un altro text box?


 textbox e il testo in un altro text box?
Codice? Quale codice?
-- 
ciao, hal

 Codice? Quale codice?
Scusa è vero che non sapete cosa ho fatto:
io salvo in un file sequenziale due variabili: codice e testo;
quando prelevo i dati dal file faccio input#1, codice,testo,
poi mando il codice in text1 e il testo in text2.
questo lo devo fare per tutto quello che ho nel file, per cui io dopo
avere  mandato il codice in text1, il testo in text2, devo fare una pausa
per vedere  quei dati, se no in meno di un secondo mi carica un'intero
file e io non vedo niente.
 Comunque per essere più chiaro metto il codice :
Private Sub Command6_Click()
Dim codice, testo As String
Open "c:\programmi\promemoria\promemoria.dat" For Input As #1
Do While Not EOF(1)
    Text1.Text = ""
    Text2.Text = ""
    Input #1, codice, testo
    Text1.Text = codice
    Text2.Text = testo
 
 'MI SERVE QUALCOSA PER FARE ASPETTARE IL PROGRAMMA IN MODO CHE LEGGO NEI
TEXTBOX, QUANDO GLI DO IL SEGNALE IL PROGR. CONTINUA IL LOOP E MI FA
VEDERE IL SECODO "RECORD" DEL FILE (è scritto in maiuscolo non perchè
"urlo", ma per metterlo in evidenza)
 Loop
 Close #1
End Sub
Questo lavoro ho provato a farlo anche con file Random, ma esce un file
gigante con poche informazioni perchè la var codice è 4 caratteri, quella
testo 255 (mi serve così), quindi ogni record del file è grande 259
caratteri.
 Grazie
 Sniper Wolf


 per vedere  quei dati,
pausa di quanto tempo? per fare che cosa? attendi input dall'utente?
-- 
ciao, hal

 Sniper Wolf wrote:


Non deve avere tempo, deve leggere il record successivo del file quando io
clicco un pulsante, come il pause dello stereo...
  Grazie lo stesso


 clicco un pulsante, come il pause dello stereo...
Allora vale quanto gia' detto da termopilucco e me.
Se il file non e' troppo grosso puoi caricarne tutte le righe in un 
array di stringhe (in questo modo puoi facilmente andare avanti
e indietro di 1 o n righe a piacere) oppure memorizzi l'handle
del file a livello di form e al click leggi una sola riga.
Ti faccio un esempio senza gestione degli errori (che nei
programmi reali *deve* essere implementata) per non distrarre
l'attenzione dall'argomento del post.
Nota: sto scrivendo a memoria, percio' non garantisco sulla
precisione della sintassi: per questa c'e' la guida in linea.
'// sezione dichiarazioni del form
Private m_hFile As Integer	' riferimento al file
Private m_Filename As String	' nome del file valorizzato
				' da qualche parte
Private Sub Form_Load()
     m_hFile = FreeFile()
     Open m_Filename For Input As #m_hFile
     ' si posiziona e mostra la prima riga del file
     CaricaRiga m_hFile
End Sub
' event handler del click del pulsante di avanzamento
Private Sub UnPulsante_Click()
     ' avanza di una riga e la mostra
     CaricaRiga
End Sub
Private Sub Form_Unload()
    Close #m_hFile
End Sub
Private Sub CaricaRiga()
    Dim riga As String
    Line Input #m_hFile, riga
    <... codice che spacchetta la riga...>
    Text1.Text = ...
    Text2.Text = ...
    <... etc. etc. >
End Sub
-- 
hth, hal

 Sniper Wolf wrote:









Grazie per l'aiuto a tutti quanti!!
Questo modo sembra essere adatto per un altro programma che stò facendo,
per quello che mi ha originato il problema ho trovato un sistema:
carico il primo record del file; poi ho 2 pulsanti, uno che mi mostra il
record precedente ed uno il successivo, così , come funziona per i cd
audio, cliccando "next" un contatore aumenta di uno, con Get #1,
contatore, record estraggo il record seguente, così faccio anche per il
tasto che mi mostra il precedente. 
Così funziona, logicamente stò facendo tutti i controlli (Es. controllo
che contatore sia >0, che sia minore della grandezza del file), mi stanno
portando via un sacco di tempo, ma penso che quando vedrò il mio primo
"vero" programma in Visual Basic funzionare da Dio, sarò soddisfatto. 
 Grazie a tutti quanti.
       Sniper Wolf


  Grazie a tutti quanti.
In bocca al lupo,
-- 
hal