Italian Come prendere il primo valore di una lista?

amorosik

Well-Known Member
Licensed User
Ho una lista di nome coda_file_da_inviare
La riempio con oggetti di tipo ftp_file_type (due stringhe)
La domanda e': come fare per estrarre il primo oggetto della lista?
Attualmente lo faccio col For Each ed esco al primo giro (e non ridete che vi ho visto), ma ovviamente, anche se funziona, non puo' essere questa LA soluzione

B4X:
Public coda_file_da_inviare As List
Type ftp_file_type (dir_file As String, nome_file As String)

For Each f As ftp_file_type In coda_file_da_inviare
     Dim ftp_nome_dir As String=f.dir_file
     Dim ftp_nome_file As String=f.nome_file
     Exit
     Next
 

LucaMs

Expert
Licensed User
(e non ridete che vi ho visto)
Questa in effetti mi ha fatto ridere 😄

Fallo con un Do While (o Until).

B4X:
Do While Lista.Size > 0
    ... = Lista.Get(0)
    ' alla fine dell'utilizzo di quell'elemento...
    Lista.RemoveAt(0)
Loop
 

amorosik

Well-Known Member
Licensed User
Questa in effetti mi ha fatto ridere 😄

Fallo con un Do While (o Until).

B4X:
Do While Lista.Size > 0
    ... = Lista.Get(0)
    ' alla fine dell'utilizzo di quell'elemento...
    Lista.RemoveAt(0)
Loop

E dai, pure questa e' ridicola, un ciclo si usa quando si deve ciclare
Ci sara' un modo per andare dritti con un'istruzione
 

LucaMs

Expert
Licensed User
E dai, pure questa e' ridicola, un ciclo si usa quando si deve ciclare
Ci sara' un modo per andare dritti con un'istruzione
Intanto io scrivo cose ridicole solo quando scherzo.
Secondo, cosa pensi che sia un "For Each"? E' un ciclo!
Terzo, quella è la soluzione.

Da me non riceverai altre risposte, puoi starne certo.
 

amorosik

Well-Known Member
Licensed User
Intanto io scrivo cose ridicole solo quando scherzo.
Secondo, cosa pensi che sia un "For Each"? E' un ciclo!
Terzo, quella è la soluzione.

Da me non riceverai altre risposte, puoi starne certo.

Mi spiace se ti e' sembrato un tono irridente
Non era assolutamente mia intenzione prendere in giro e tanto meno offendere nessuno
Se comunque, involontariamente lo avessi fatto, me ne scuso sinceramente

Per quanto riguarda la soluzione, sia il Do While... che il Each For... ovviamente sono cicli
Ed ovviamente non e' quella la soluzione del problema
Un ciclo si usa quando vuoi testare tutti o quasi gli elementi dell'oggetto in questione
Nel mio caso, desidero prendere solo il primo elemento della lista, per questo credo che esista una soluzione non basata su un ciclo
 

amorosik

Well-Known Member
Licensed User
B4X:
coda_file_da_inviare.Get(0)

C'ho gia' provato ma quando lo metto dentro ad un oggetto (sempre del tipo ftp_file_type come da esempio al primo post), mi ritrovo con dei valori inattesi, che non corrispondono al primo oggetto della lista
 

Xfood

Well-Known Member
Licensed User
Ho una lista di nome coda_file_da_inviare
La riempio con oggetti di tipo ftp_file_type (due stringhe)
La domanda e': come fare per estrarre il primo oggetto della lista?
Attualmente lo faccio col For Each ed esco al primo giro (e non ridete che vi ho visto), ma ovviamente, anche se funziona, non puo' essere questa LA soluzione

B4X:
Public coda_file_da_inviare As List
Type ftp_file_type (dir_file As String, nome_file As String)

For Each f As ftp_file_type In coda_file_da_inviare
     Dim ftp_nome_dir As String=f.dir_file
     Dim ftp_nome_file As String=f.nome_file
     Exit
     Next
ftp_file_type(0).dir_file
ftp_file_type(0).nome_file
 

Xfood

Well-Known Member
Licensed User
Faccio qualche prova dopo cena, e posto il codice, ( se qualcuno non arriva prima) 😁😁😁puoi scrivere un esempio del contenuto
Di coda_file_da_inviare
 

Star-Dust

Expert
Licensed User
B4X:
Dim ftp_nome_dir As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).dir_file
Dim ftp_nome_file As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).nome_file

Oppure
B4X:
Dim Item As ftp_file_type = fcoda_file_da_inviare.Get(0)
Dim ftp_nome_dir As String=Item.dir_file
Dim ftp_nome_file As String=Item.nome_file
 

Star-Dust

Expert
Licensed User
Questa in effetti mi ha fatto ridere 😄

Fallo con un Do While (o Until).

B4X:
Do While Lista.Size > 0
    ... = Lista.Get(0)
    ' alla fine dell'utilizzo di quell'elemento...
    Lista.RemoveAt(0)
Loop
L'esempio è in linea di principio giusto, ma il ciclo non servirebbe, tranne che lo scopo è estrare il primo e elaborarlo e poi successivamente estrarre gli altri e seguire. Poi magari ho capito male cosa vuole fare AmoriSik. Io consiglio di rispondere solo Si o No
 

Star-Dust

Expert
Licensed User
Hai una lista (coda_file_da_inviare) piena di oggetti di tipo ftp_file_type, no?

Quindi la soluzione è quella:
B4X:
Do While coda_file_da_inviare.Size > 0
   Dim ftp_file As ftp_file_type = coda_file_da_inviare.Get(0)
    'usi ftp_file.dir_file
    'usi ftp_file.nome_file
' e quando ci hai fatto ciò che devi lo rimuovi.
    coda_file_da_inviare.RemoveAt(0)
Loop
Ma deve estrarne uno o tutti uno alla volta?
 

Star-Dust

Expert
Licensed User
Io preferisco queste
B4X:
Dim ftp_nome_dir As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).dir_file
Dim ftp_nome_file As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).nome_file

Oppure
B4X:
Dim Item As ftp_file_type = fcoda_file_da_inviare.Get(0)
Dim ftp_nome_dir As String=Item.dir_file
Dim ftp_nome_file As String=Item.nome_file
 

Xfood

Well-Known Member
Licensed User
Io preferisco queste
B4X:
Dim ftp_nome_dir As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).dir_file
Dim ftp_nome_file As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).nome_file

Oppure
B4X:
Dim Item As ftp_file_type = fcoda_file_da_inviare.Get(0)
Dim ftp_nome_dir As String=Item.dir_file
Dim ftp_nome_file As String=Item.nome_file


Per me e'piu chiaro questo esempio
B4X:
Dim Item As ftp_file_type = fcoda_file_da_inviare.Get(0)
Dim ftp_nome_dir As String=Item.dir_file
Dim ftp_nome_file As String=Item.nome_file
[/QUOTE]

Questo, non Lo capito, sembra lo stesso codice,
Ma una volta legge il nome_file,
Una Volta il nome_dir,
Il.comando Sempre fcoda_file_da_inviare.Get(0).
Si impara sempre cose nuove.

B4X:
Dim ftp_nome_dir As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).dir_file
Dim ftp_nome_file As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).nome_file
 

Star-Dust

Expert
Licensed User
Questo, non Lo capito, sembra lo stesso codice,
Ma una volta legge il nome_file,
Una Volta il nome_dir,
Il.comando Sempre fcoda_file_da_inviare.Get(0).
Si impara sempre cose nuove.

B4X:
Dim ftp_nome_dir As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).dir_file
Dim ftp_nome_file As String=fcoda_file_da_inviare.Get(0).As(ftp_file_type).nome_file
Questo usa i nuovi comandi AS così da evitare di usare la variabile Itme
 
Top