Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - help programmino
Forum - Visual Basic 6 - help programmino

Avatar
niubbovb (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/11/2007

Segnala al moderatore
Postato alle 5:25
Giovedì, 08/11/2007
ciao a tutti!
sono (come dice anche il nick :) ) un niubbo di vb...
sto facendo ora i primi passi... il problema è che proprio non mi riesce fare un programma..potete aiutarmi?
Ma vengo al dunque... devo creare un programma con una combo che carica un file txt dove su ogni linea sono scritti dei componenti(es. modello tv, frequenza, contrasto etc..) uno sotto l'altro.
il programma deve caricare il file txt all'avvio e deve visualizzare il contenuto nel combo.
ci sono inoltre 4 caselle text che devono visualizzare singolarmente ognuna i caratteri "separati" della combo che è attualmente selezionata (ovvero la prima text il modello, la seconda la frequenza, la terza il contrasto etc..)
ci sono poi 2 pulsanti che aggiornano il file txt: uno deve aggiungere dei dati (scritti nelle varie text) e l'altro deve cancellare il contenuto del combo attuale anche su txt
forse non è proprio facile capirlo da come mi sono espresso, ma in sintesi il programma deve essere in grado di aggiornare il txt aggiungendo o rimuovendo stringhe singole (e facendo il refresh in modo da avere la combo sempre aggiornata all'ultimo cambiamento)
è troppo difficile spiegarmi la retta via per poterlo realizzare? se avete materiale già pronto    non esitate a postarmelo! vi ringrazio in anticipo  
per la pazienza...aspetto risposte!!
a presto

PM Quote
Avatar
gius (Ex-Member)
Expert


Messaggi: 294
Iscritto: 20/06/2007

Segnala al moderatore
Postato alle 7:10
Giovedì, 08/11/2007
Per uno alle prime armi come te,mi sembra un prog un pò difficilotto:rotfl:,non credi;)

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 11:43
Giovedì, 08/11/2007
hai gia buttato giù qualche riga di codice?
secondo il regolamento (ed è giusto) bisogna cercare di aiutare le persone a sviluppare i sorgenti non gli creiamo programmi su richiesta

PM Quote
Avatar
niubbovb (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/11/2007

Segnala al moderatore
Postato alle 14:08
Giovedì, 08/11/2007
si qualcosa ho scritto..

pulsante command1(registra su txt)

Private Sub Command1_Click()
Dim scrittura As String
Dim linea As Long
IntTele = MsgBox("aggiungere i componenti alla lista?", vbYesNo)
If vbYes Then
scrittura = Text1 & "   " & Text4 & "   " & Text2 & "   " & Text3
linea = FreeFile
Open App.Path & "\tv.txt" For Append As #linea
Print #linea, scrittura
Close #linea
' qui avevo pensato di inserire
' Combo1.AddItem Text1 & " " & text2 etc in modo che     ' carichi tutte le text scritte nel combo
Else: Resume
End If
End Sub

per quanto riguarda invece la lettura il problema è ben più grosso... non riesco a visualizzare tutti gli elementi del txt nel combo in questo modo, ci riesco solo se nel ciclo for inserisco valori di numero uguale alle stringhe del file txt, allora funziona.. ma a me serve un tipo di lettura che carichi tutto il contenuto del txt riga per riga, senza dover comunicare il n° delle stringhe..(esempio se ho un txt con 3 righe devo mettere for ctr= 1 to 3 etc..) dato che il txt non avrà più di 50 stringhe ho messo nel ciclo for il valore da 1 a 100 per sicurezza ma così mi dà errore e non carica nulla..

Private Sub Form_Load()
Dim riga As Integer
Dim roba As String
Dim data As String
Dim ctr As Integer
roba = "c:\provatv.txt"
riga = FreeFile

Open roba For Input As riga
'
For ctr = 1 To 100
Input #riga, data
Combo1.AddItem (data)
Next ctr
End Sub


La rimozione degli elementi penso che sia la cosa più difficile e non ho idea di come farla...cioè in linea teorica si ma in pratica la vedo dura.. dovrei rinominare automaticamente ogni stringa in modo che abbia il suo numero di posizione nel txt.. quando la seleziono da combo e premo il bottone rimuovi questo legge in che posizione è del txt e cancella la stringa, facendo il refresh (ricaricando il form) ricarica anche il txt dove non compare più la stringa..però non ho la più pallida idea di che comandi usare per assegnare ad ogni stringa un numero di posizione e per cancellare le stringhe su txt..

grazie ancora per la pazienza

:k:

PM Quote
Avatar
gius (Ex-Member)
Expert


Messaggi: 294
Iscritto: 20/06/2007

Segnala al moderatore
Postato alle 15:23
Giovedì, 08/11/2007
P4p3r0g4 ti dò assolutamente ragione:NON SI FANNO PROGRAMMI SU RICHIESTA,al massimo si può dare qualche aiutino con il codice,comunque

Non ho capito bene quello che vuoi fare,comunque se vuoi eliminare in una combo ,basta la semplice routine
Codice sorgente - presumibilmente Plain Text

  1. Combo1.RemoveItem (elementodaeliminare)



:rotfl::rotfl::rotfl:

Ultima modifica effettuata da gius il 08/11/2007 alle 15:25
PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 20:15
Giovedì, 08/11/2007
aggiungo combo1.listindex per ottenere il valore associato all'elemento selezionato
es.
combo1.removeitem(combo1.listindex)

rimuove l'elemento selezionato.

delle cose prima non ho capito pressocchè nulla.
puoi rispiegare meglio il problema del caricamento nel textbox e il problema con la scrittura del file?

PS:Vi prego non chiamatemi P4p3r0g4.
E ché sono, un codice a barre?
Lo uso solo quando Paperoga non è più disponibile.
"Pap" , "Pape" , "qualcosa di originale" vanno più che bene.
PPS: anche "Dio Onnipotente" va bene..

Ultima modifica effettuata da P4p3r0g4 il 08/11/2007 alle 20:20
PM Quote
Avatar
niubbovb (Normal User)
Newbie


Messaggi: 3
Iscritto: 08/11/2007

Segnala al moderatore
Postato alle 20:52
Giovedì, 08/11/2007
allora... io devo caricare il txt nella combo (che poi smisterà le info segmentando la stringa selezionata (listindex) nelle varie text (ovvero se nella combo1 c'è "philips32 100hz 1000:1" nella text1 ci andrà solo philips32 nella text2 100hz e nella text3 1000:1 ). quando però vado a toccare gli elementi aggiungendone altri o eliminandone qualcuno, io lavoro sul txt e non sulla combo. in pratica ogni volta che chiudo il programma, nel txt saranno presenti le informazioni aggiornate all'ultima volta che è stato modificato il txt...praticamente devo usare il file txt come database strutturato per ogni stringa (es. * primi 15 caratteri modello tv in text1, dal 16° al 22° frequenza etc..) e quando però elimino il listindex della combo, io devo eliminare la stringa che si trova nel file txt corrispondente a  
quella nella combo, farò un esempio
nel file txt ho i seguenti oggetti:
philips32       100hz  1000:1
philips22        60hz  2000:1
philips42       100hz  9000:1

quando io aggiungo un nuovo oggetto scrivo nella text del modello il modello, in quella del contrasto il contrasto etc.. e poi faccio scrivere il tutto nel txt con la struttura citata prima*, dopo ci sarà una quarta stringa. quando però io elimino l'oggetto nel combo, devo andarlo ad eliminare anche nel txt, altrimenti quando riapro il programma mi ricompare... solo che se voglio eliminare mettiamo caso l'oggetto che ha posizione
2 nell'esempio che ho fatto (philips22        60hz  2000:1) come faccio? non posso andare a guardare che numero occupa devo farglielo fare al programma...
un altro problema è legato al caricamento dei dati nella combo..
devo caricare il txt nella combo, in modo di avere un menu a discesa che mostri tutto il contenuto riga per riga...ma con questo ciclo non funziona, provate voi stessi! Questo procedimento funziona solo se si sa il numero delle stringhe da caricare.. (se ci sono 2 stringhe sole nel txt allora dovrei mettere nel ciclo for ctr= 1 to 2) ma in questo modo sono dipendente da quel numero mentre io voglio che carichi sempre tutto ciò che è dentro al txt..

Private Sub Form_Load()
Dim riga As Integer
Dim roba As String
Dim data As String
Dim ctr As Integer
roba = "c:\prove.txt"
riga = FreeFile

Open roba For Input As riga
'
For ctr = 1 To 100
Input #riga, data
Combo1.AddItem (data)
Next ctr
End Sub


questa volta spero di essere stato più chiaro..grazie di nuovo;)

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 22:08
Venerdì, 09/11/2007
per il primo problema, quello riguardante separare i campi dei txt in un database .txt, ti proporrei due alternative.

1) usare i Record come metodo di apertura(e farti aiutare da qualcuno che li sa usare o consultare l'msdn)

OPPURE

2) Al posto di separare a carattere separi "a righe"

per separare un numero di caratteri specifici da un file di solito io apri in binary (in effetti io apro molto spesso in binary è il modo che preferisco)

Codice sorgente - presumibilmente Visual Basic 6

  1. open "C:\file.txt" for Binary As #1
  2. primopezzo = space(ncaratteri)
  3. get #1, caratteredipartenza , primopezzo


prima apro in binary
imposto la lungezza di cartteri da prelevare con degli spazi
prendo dal file 1 dal carettere [caratteredipartenza] una stringa di lungezza pari a [primopezzo] e la metti in [primopezzo]
per prendere più parti usa un bel ciclo
per prender tutto insieme usa nello space(..) [lof(1)]


Altrimenti usa (e ti consiglio) un bellissimo line imput
Ponendo che le salvi con la funzione print, che dopo ogni immissione va a capo
le ripendio con un line imput

Codice sorgente - presumibilmente Visual Basic 6

  1. open "C:\file.txt" for input As #1
  2. line input #1, primopezzo



il successivo richiamo line input ti darà la 2 riga il terzo richiamo la terza riga e via dicendo.
usa i cicli per ottenere l'intero file.

ti consiglio di buttare tutto in un bell'array.


per il secondo problema, banale se usi i record, se usi un metodo sequenziale la cosa migliore è cancellare il file e riscriverlo secondo il contenuto della combo no?

Codice sorgente - presumibilmente VB.NET

  1. Open "C:\file.txt" for output as #1
  2. for x = 0 to combo.listcount -1
  3. print #1, combo.list(X)
  4. NEXT X
  5. close #1


PM Quote