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 - ricerca dinamica di una stringa
Forum - Visual Basic 6 - ricerca dinamica di una stringa

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
azz.ciccio (Normal User)
Pro


Messaggi: 74
Iscritto: 08/04/2009

Segnala al moderatore
Postato alle 20:29
Domenica, 12/04/2009
ciao a tutti, mi sono inbattuta su un problema che non riesco a venirne fuori;
ho il solito file di testo che vado a leggere e scrivo tutti i dati in una listbox. e fino a qui nessun problema.
nel file di testo posso trovarmi una serie di valori cha vanno da T01 T99 in ordine sparso, ovviamente non posso creare un ciclo case con 99 possibili valori... brutto da vedere e soprattutto inutile. la soluzione piu' semplice sarebbe un ciclo if;
tipo:

Codice sorgente - presumibilmente Visual Basic 6

  1. If dataDRD = "T01" Then
  2. List2.AddItem dataDRD$
  3. xt = xt + 1
  4. Label4 = xt
  5. End If



ogni volta che la funzione principale mi legge una riga del file di testo scrive una listbox tutti i valori e in un'altra listbox tutti i vari T01,T02,T03 ecc...
pero' tra le virgolette dovrei metterci qualcosa (ma cosa?)
spero di essere stato chiaro :-|
grazie :k:

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 20:42
Domenica, 12/04/2009
non ho capito bene cosa hai nel file di testo... esempio:
T01
T15
etc.
oppure c'è anche altro?
e poi non ho capito perchè devi usare l'if (che tanto per precisione non è un ciclo ma un costrutto :D), cioè quale è la condizione che imponi? non esegui la stessa operazione in ogni caso?

PM Quote
Avatar
azz.ciccio (Normal User)
Pro


Messaggi: 74
Iscritto: 08/04/2009

Segnala al moderatore
Postato alle 20:57
Domenica, 12/04/2009
Testo quotato

Postato originariamente da ruggy94:

non ho capito bene cosa hai nel file di testo... esempio:
T01
T15
etc.
oppure c'è anche altro?
e poi non ho capito perchè devi usare l'if (che tanto per precisione non è un ciclo ma un costrutto :D), cioè quale è la condizione che imponi? non esegui la stessa operazione in ogni caso?



ciao, ti posto il codice cosi' sicuramente e' piu' chiaro.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2.   Dim dataDRD As String
  3.   Dim xt As Long
  4.   Dim varT As Variant
  5.   varT = Array("T01", "T02", "T03", "T04")
  6.  
  7.  
  8.   CommonDialog1.CancelError = True
  9.   On Error GoTo ErrHandler
  10.   CommonDialog1.Filter = "DRD Files(*.drd)|*.drd|"
  11.   CommonDialog1.ShowOpen
  12.   Text1.Text = CommonDialog1.FileName
  13.  
  14.   Open CommonDialog1.FileName For Input As #1
  15. While Not EOF(1)
  16. Input #1, dataDRD
  17.  
  18.  
  19. If dataDRD = varT Then
  20. List2.AddItem dataDRD$
  21. xt = xt + 1
  22. Label4 = xt
  23. ElseIf dataDRD = "M48" Then
  24. ElseIf dataDRD = "M72" Then
  25. ElseIf dataDRD = "%" Then
  26. ElseIf dataDRD = "M30" Then
  27. Else: List1.AddItem dataDRD$
  28. End If
  29.  
  30. Wend
  31. Close #1
  32.  
  33.   Exit Sub
  34. ErrHandler:
  35.   Exit Sub
  36.  
  37. End Sub


PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:33
Domenica, 12/04/2009
sec me se ti spiegassi a parole saresti + comprensibile... fai esempi (non di codice) di come è strutturato il file ecc..

PM Quote
Avatar
azz.ciccio (Normal User)
Pro


Messaggi: 74
Iscritto: 08/04/2009

Segnala al moderatore
Postato alle 21:41
Domenica, 12/04/2009
Testo quotato

Postato originariamente da GrG:

sec me se ti spiegassi a parole saresti + comprensibile... fai esempi (non di codice) di come è strutturato il file ecc..


%
M48
M72
T01C0.0315
T02C0.0320
T03C0.0354
T04C0.0394
T05C0.0440
T06C0.0470
T07C0.0520
T08C0.0787
T09C0.0866
T10C0.1100
T11C0.1620
%
T01        // i vari T01 ecc... li devo copiare in un'altra listbox
X1950Y9926
X1950Y10926
T02
X17950Y18426
X17650Y19126
T03
X10950Y26926
X9950Y26926
T04
X22465Y26181
X24434Y26181
T05
X18950Y27926
X33450Y15926
T06
X24100Y16076
X26880Y15316
T07
X28950Y2926
X22950Y2926
T08
X14190Y28426
X1087Y28426
T09
X21048Y23426
X25851Y23426
T10
X25950Y2926
T11
X30900Y13926
X37150Y20726 // le coordinate x y possono variare anche fino a 500
M30

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 21:49
Domenica, 12/04/2009
Ok. E tu cosa vuoi che ti appaia nelle listbox? In una i T01 etc. e nell'altra i codici che li seguono?

PM Quote
Avatar
azz.ciccio (Normal User)
Pro


Messaggi: 74
Iscritto: 08/04/2009

Segnala al moderatore
Postato alle 21:52
Domenica, 12/04/2009
Testo quotato

Postato originariamente da ruggy94:

Ok. E tu cosa vuoi che ti appaia nelle listbox? In una i T01 etc. e nell'altra i codici che li seguono?



esatto.

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 22:05
Domenica, 12/04/2009
ma il pezzo iniziale, precisamente questo:
Testo quotato


%
M48
M72
T01C0.0315
T02C0.0320
T03C0.0354
T04C0.0394
T05C0.0440
T06C0.0470
T07C0.0520
T08C0.0787
T09C0.0866
T10C0.1100
T11C0.1620
%


è fisso o varia?

comunque per ste cose io ti consiglierei vivamente un db

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 22:11
Domenica, 12/04/2009
Allora. Se il file è proprio strutturato come hai postato poco fa (mi riferisco soprattutto al fatto che nella parte dove hai T01 (ad esempio) e poi le coordinate X e Y, queste ultime si trovano NON nella stessa riga di T01, ma in quella sotto), potresti fare:
Codice sorgente - presumibilmente VB.NET

  1. Dim Riga As String 'Riga sarebbe una stringa che indica ogni riga del file
  2. If Left(Riga, 1) = "T" Then
  3. 'significa che inizia con T01 oppure T02 etc.
  4. 'quindi vedi che devi fare
  5. 'poi fai un'altra verifica
  6. If Mid(Riga, 3, 1) = "C" Then
  7. 'significa che la Riga è del tipo T01C0.0315 (ad esempio)
  8. 'e quindi agisci di conseguenza
  9. ElseIf Len(Riga) = 3 Then
  10. 'significa che la Riga contiene SOLO il T01 (o T02 etc.)
  11. 'e quindi nella riga sotto ci saranno le coordinate X e Y
  12. 'quindi ti regoli
  13.  
  14. End If
  15. End If


In questo codice ti ho scritto come individuare le varie situazioni che si possono venire a creare nella riga del file. Prova ad applicarlo al tuo codice, se non ci riesci riposta dicendo che problemi hai :k:

Ultima modifica effettuata da ruggy94 il 12/04/2009 alle 22:12
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo