Autore Topic: [RISOLTO] FileChooser1 e restituzione scelta  (Letto 574 volte)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
[RISOLTO] FileChooser1 e restituzione scelta
« il: 06 Gennaio 2017, 22:45:20 »
Utilizzando FileChooser,

Con
Codice: [Seleziona]
FileChooser1.Filter = ["*.png", "Seleziona una immagine nel formato:   "]
imposto la visualizzazione dei file nel solo formato .png

Con
Codice: [Seleziona]
If FileChooser1.SelectedPath = "" Then
  Message.Info("Non hai selezionato una immagine")
End If
segnalo che la scelta non è stata fatta

Nonostante il filtro impostato, in FileChooser rimane comunque la possibilità di visualizzare "Tutti i file", quindi, per evitare scelte diverse da una immagine .png ho inserito

Codice: [Seleziona]
If FileChooser1.SelectedPath <> "*.png" Then
  Message.Info("Non hai selezionato una immagine nel formato .png   ")
End If

ma, quest'ultima parte non funziona, perchè?   :nono:

Grazie  ;)
« Ultima modifica: 07 Gennaio 2017, 00:25:36 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #1 il: 06 Gennaio 2017, 23:30:08 »
Con precisione, che cosa restituisce la proprietà ".SelectedPath" della Classe FileChooser ?




« Ultima modifica: 06 Gennaio 2017, 23:31:14 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #2 il: 06 Gennaio 2017, 23:36:25 »
Con precisione, che cosa restituisce la proprietà ".SelectedPath" della Classe FileChooser ?

Gambas dice:

Returns the current selected file.
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #3 il: 06 Gennaio 2017, 23:38:30 »
...ossia l'intero "percorso" del file, quindi.........
« 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #4 il: 06 Gennaio 2017, 23:51:36 »
L'intero percorso, ma completo del file, esempio:
User/Home/Miacartella/File.jpg
quindi, se con l'asterisco escludo tutto quello che viene prima dovrebbe restare .jpg

è questo che non capisco  ???
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #5 il: 07 Gennaio 2017, 00:01:08 »
..l'asterisco include qualunque cosa......

Ad ogni modo per ottenere la sola estensione di un file, ....ovviamente ci sarebbero molti modi, ma il modo più semplice è fornito dal Metodo .Ext( ) della Classe File.
« 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #6 il: 07 Gennaio 2017, 00:05:03 »
............il modo più semplice è fornito dal Metodo .Ext( ) della Classe File.

ok, grazie mille, ma mi piaceva capire perché come lo avevo scritto io non funzionava
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #7 il: 07 Gennaio 2017, 00:15:53 »
... mi piaceva capire perché come lo avevo scritto io non funzionava
Perché la stringa "*.png" svolge la sua precipua funzionalità (ossia come filtro, come discriminante), anche utilizzando l'asterisco, soltanto all'interno del primo elemento del vettore restituito dalla proprietà ".Filter" della Classe FileChooser.
« Ultima modifica: 07 Gennaio 2017, 00:57:36 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:FileChooser1 e restituzione scelta
« Risposta #8 il: 07 Gennaio 2017, 00:24:59 »
Citazione
Perché la stringa "*.png" svolge la sua precipua funzionalità (ossia come filtro, come discriminante), anche utilizzando l'asterisco, soltanto all'interno del primo elemento del vettore restituito dalla proprietà ".Filter" della Classe FileChooser

Questo non lo sapevo, grazie mille, adesso ho capito  :ciao:
« Ultima modifica: 07 Gennaio 2017, 00:26:06 da ilfurlan »
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #9 il: 07 Gennaio 2017, 00:28:26 »
Quello che ho scritto è riferito ovviamente al caso in questione, non in senso assoluto.

Ad ogni modo il problema sta nel fatto che tu, per effettuare il confronto, hai usato l'operatore = dell'uguaglianza, che presuppone una esatta e puntuale corrispondenza con i caratteri presenti nelle due stringhe.
E' il caso di ricordare che la proprietà .SelectedPath ritorna il completo percorso del file (dell'unico) scelto. Essa restituisce, infatti, una stringa, e non già un array di stringhe.



« Ultima modifica: 07 Gennaio 2017, 03:30:34 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #10 il: 07 Gennaio 2017, 00:34:56 »
Va ulteriormente aggiunto che - ad ogni modo - l'asterisco come filtro vale solo con le risorse Gambas che lo ammettono e lo usano dunque come tale.
Infatti qui il risultato è "False", e non "True" come invece ci si aspetterebbe, se si credesse che l'asterisco vale sempre e comunque come filtro:
Codice: [Seleziona]
Public Sub Main()

  Dim s As String
 
    s = "aloa"
   
    Print s = "*oa"
 
End
Qui la stringa "*oa" è interpretata esattamente come 2A 6C 61 e non come "qualsiasi stringa che termina con i caratteri oa " !
« Ultima modifica: 07 Gennaio 2017, 11:20:49 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.266
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #11 il: 07 Gennaio 2017, 00:56:28 »
...l'asterisco come filtro vale solo con le risorse Gambas che lo ammettono e lo usano dunque come tale.
Devi utilizzare l'operatore Like unitamente all'asterisco.

Codice: [Seleziona]
If FileChooser1.SelectedPath Not Like "*.png" Then
   Print "Non hai selezionato una immagine nel formato .png   "
Endif

Oppure anche l'operatore Ends, ma eliminando l'asterisco prima dell'estensione del file immagine:
Codice: [Seleziona]
If FileChooser1.SelectedPath Not Ends ".png" Then
   Print "Non hai selezionato una immagine nel formato .png   "
Endif


Potresti utilizzare anche la funzione Comp( ):
Codice: [Seleziona]
If Comp(FileChooser1.SelectedPath, "*.png", gb.Like) Then
  Print "Non hai selezionato una immagine nel formato .png   "
Endif
« Ultima modifica: 07 Gennaio 2017, 11:26:51 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 ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #12 il: 07 Gennaio 2017, 10:18:19 »
Ottima spiegazione, purtroppo mi ero fissato su
Citazione
Returns the current selected file.
convinto quindi che mi restituiva il nome del file senza pensare che
Citazione
E' il caso di ricordare che la proprietà .SelectedPath ritorna il completo percorso del file (dell'unico) scelto. Essa restituisce, infatti, una stringa, e non già un array di stringhe.
infatti, come dici tu
Citazione
Va ulteriormente aggiunto che - ad ogni modo - l'asterisco come filtro vale solo con le risorse Gambas che lo ammettono e lo usano dunque come tale.
Infatti qui il risultato è "False", e non "True" come invece ci si aspetterebbe, se si credesse che l'asterisco vale sempre e comunque come filtro:
mi restituiva sempre false anche selezionando un'immagine .png

 :ok:
Non insegno ma imparo per riportare ad altri il mio sapere.

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #13 il: 09 Gennaio 2017, 12:54:15 »
non se se ti puo' essere utile, ma il filechooser ha anche la proprieta' "filter" che ti permette di restringere i tipi di file da visualizzare e conseguentemente poter selezionare:
FileChooser1.Filter = ["*.png;*.jpg;*.jpeg;*.bmp", "Picture files", "*.svg;*.wmf", "Drawing files"]
se corri, morirai stanco (motto degli sniper)

Offline ilfurlan

  • Grande Gambero
  • ***
  • Post: 111
    • Mostra profilo
Re:[RISOLTO] FileChooser1 e restituzione scelta
« Risposta #14 il: 09 Gennaio 2017, 14:14:07 »
non se se ti puo' essere utile, ma il filechooser ha anche la proprieta' "filter" che ti permette di restringere i tipi di file da visualizzare e conseguentemente poter selezionare:
FileChooser1.Filter = ["*.png;*.jpg;*.jpeg;*.bmp", "Picture files", "*.svg;*.wmf", "Drawing files"]

Grazie allegfede, sì il filtro è la prima cosa che ho utilizzato...
il mio problema era poi impedire scelte diverse o errate ma con le spiegazioni di vuott
(che è bravo perchè ti porta alla soluzione facendoti prima ragionare sulle cose)
ho risolto  :2birre:
Non insegno ma imparo per riportare ad altri il mio sapere.