Autore Topic: .insert  (Letto 1000 volte)

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
.insert
« il: 08 Dicembre 2012, 18:58:11 »
Dunque: istruzione tipo
Codice: [Seleziona]
Dim files As String[]
Dim arr As String[]
for j=0 to 2
    files.Insert(RDir(directory, arr[j]))
next

dove arr[j] appunto, proviene da un array, e contiene dei valori, per esempio *.txt. oppure nome.txt. Il problema si ha quando si deve aggiungere pure un file nascosto, ovvero con il punto davanti al nome... c'e' modo di farlo, o non sono completamente addormentato?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: .insert
« Risposta #1 il: 08 Dicembre 2012, 21:10:46 »
...hai provato con il filtro  "*.*"   ?


Ho fatto un esperimento con la funzione Dir, cercando di visualizzare in console i nomi dei file nascosti contenuti nella cartella di un progetto Gambas:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

 Dim file As String

   For Each File In Dir("percorso_cartella_progetto_Gambas", "*.*")
     Print File
  Next

End

ed ho visto i nomi, comprensivi del punto, di tutti i file e le cartelle nascosti.  :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
Re: .insert
« Risposta #2 il: 08 Dicembre 2012, 21:51:08 »
...hai provato con il filtro  "*.*"   ?

Beh si', ma in altri casi: qui non posso aggiungere tutti i file, se no dovrei andare a rileggere dopo cosa ho preso e agire di conseguenza: ovvero, con rdir etc etc *.* prenderei tutto e poi lo selezionerei, adesso invece con insert faccio direttamente la selezione prima del codice successivo. Ah, con Gambas 3.1.1...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: .insert
« Risposta #3 il: 09 Dicembre 2012, 00:10:17 »
Sembrerebbe che effettivamente un filtro diretto ed immediato sui file nascosti non possa applicarsi.


...potresti utilizzare un altro tipo di filtro - successivo  :-\ - con la proprietà .Hidden della funzione Stat.   :-X

Facciamo un esempio banale e solo esplicativo: abbiamo una cartella contenente vari file, dei quali alcuni nascosti. Vogliamo mostrare i nomi solo dei file nascosti:

Codice: gambas [Seleziona]

Public Sub Button1_Click()

 Dim FileName As String

   For Each FileName In Dir("percorso_della_cartella_contenente_i_file", "*.*")
     If Stat("percorso_della_cartella_contenente_i_file" & FileName).Hidden Then Print FileName
   Next

End


         :-\
« Ultima modifica: 09 Dicembre 2012, 00:39:04 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
Re: .insert
« Risposta #4 il: 09 Dicembre 2012, 11:05:21 »
potresti utilizzare un altro tipo di filtro - successivo

Temo che dovro' farlo perche' ho provato in tutti modi che mi venivano a mente (percorsi completi, escape, tutto insomma): provero' a dirlo sulla lista, anche se mi serve a poco una soluzione anche immediata (per l'appunto, sto usando il prog in un posto dove non posso chiedere di mettersi non dico a compilare, ma niente altro che non sia l'aggiornamento via repository); mi piace poco perche' nelle condizioni classiche i file normali sono 15000 circa, quelli nascosti sono 2 soltanto  :)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: .insert
« Risposta #5 il: 09 Dicembre 2012, 13:08:31 »
Temo che dovro' farlo...

Aspetta, aspetta...... prova a usare quest'altro filtro: ".*"


Io ho effettuato un nuovo esperimento con questo diverso filtro. Da una cartella, contenente vari file, dei quali alcuni nascosti, ho voluto mostrare i nomi dei soli file nascosti:
Codice: gambas [Seleziona]

    Public Sub Button1_Click()  
      
    Dim file As String  
      
      For Each File In Dir("percorso_cartella", ".*")  
        Print File  
     Next  
      
    End  

...ed ha funzionato.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
Re: .insert
« Risposta #6 il: 09 Dicembre 2012, 13:45:43 »
[Aspetta, aspetta...... prova a usare quest'altro filtro: ".*"

Ah ah. Ahime' no, l'avevo gia' provato, assieme a \.*, /.*, [\.]*, quote() del pezzo etc etc

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: .insert
« Risposta #7 il: 09 Dicembre 2012, 14:00:45 »
se quello che ti serve è ottenere l'elenco dei file non nascosti e solo quelli, prova così:
Codice: gambas [Seleziona]
Dir("percorso", "[^.]*")

per ottenere i soli file nascosti invece:
Codice: gambas [Seleziona]
Dir(User.home, "[!^.]*")
« Ultima modifica: 09 Dicembre 2012, 14:06:46 da sotema »
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
Re: .insert
« Risposta #8 il: 09 Dicembre 2012, 14:28:35 »
Codice: gambas [Seleziona]
Dir(User.home, "[!^.]*")


Ancora no  :)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: .insert
« Risposta #9 il: 09 Dicembre 2012, 19:39:45 »
Ho visto il tuo messagggio nella M.L.I., ed l'ho ripreso per cercare di provarlo.

Ho inserito in una cartella 6 file:
- 1 con estensione .mp3;
- 1 con estensione .odt;
- 1 con estensione .jpg;
- 3 nascosti.

Ho poi modificato leggermente il tuo codice come segue:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

Dim files As String[]
Dim directory As String

directory = "percorso_della_mia_cartella_contenente_i_6_file"

files = RDir(directory, "*.odt", gb.file)
Print files.length

files.Insert(RDir(directory, "*.jpg", gb.file))
Print files.length

files.Insert(RDir(directory, "*.mp3", gb.file))
Print files.length

files.Insert(RDir(directory, ".*", gb.file))
Print files.length

End


ecco coerentemente i risultati in console:
1
2
3
6


Pertanto a me il tuo codice funziona  :-\ . Funziona anche se pongo l'ultima istruzione così:
Codice: gambas [Seleziona]

files.Insert(RDir(directory, ".*"))


Funziona anche se voglio raccogliere solo due dei tre file nascosti:
Codice: gambas [Seleziona]

files.Insert(RDir(directory, ".set*", gb.file))
Print files.length

files.Insert(RDir(directory, ".pro*", gb.file))

in console avrò coerentemente i seguenti risultati:
1
2
3
4
5

(il sesto file, avente un nome diverso, l'ho - come previsto - escluso dal codice).

Io ho Ubuntu e Gambas 3 Versione=3.3.90
« Ultima modifica: 09 Dicembre 2012, 19:52:29 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 265
    • Mostra profilo
Re: .insert
« Risposta #10 il: 09 Dicembre 2012, 20:44:08 »
Ubuntu e Gambas 3 Versione=3.3.90

Boh, sara' quella la differenza, avevo provato con quella maschera, ma purtroppo non mi va: alla fine mi sono rassegnato usare il *.*.  Presi tutti i nomi, paragono ogni file alla maschera con un like, e alla fine me la sono cavata con poche righe. Non e' proprio quello che mi piaceva fare, ma c'e' di peggio nella vita

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: .insert
« Risposta #11 il: 09 Dicembre 2012, 22:42:39 »
....ma c'e' di peggio nella vita

Indubbiamente !  :-X
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »