Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Stopped - 01 Febbraio 2009, 17:28:46

Titolo: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 17:28:46
salve,sono nuovo.
programmo con gambas da 3 mesetti e ho 14 anni :D
se io carico nei files del programma un file .sh posso eseguirlo???
e nella descrizione del mio pacchetto quando si installa viene scritto "This programm is writed whit Gambas",è possibile rimuovere questa frase???
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Ceskho - 01 Febbraio 2009, 17:43:32
Il file .sh puoi eseguirlo mediante codice
Codice: [Seleziona]

SHELL "nome dello script"


dopo avergli dato i permessi di esecuzione. La frase puoi toglierla anche se non so che fastidio da!
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 18:17:32
come posso toglierla??
non riesco a eseguirlo...mi dice "no such files or directory".
Il file si trova in una cartella che è dentro al programma stesso
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 01 Febbraio 2009, 18:38:16
prima di eseguirla devi copiarla all' esterno del programma con :


COPY nomeprogramma TO destinazione


gli unici file che gambas riesce ad eseguire anche se sono posizionati all' interno dell ' eseguibile sono le immagini il resto deve prima essere copiato (o estratto dall eseguibile), logicamente basta farlo solo un avolta ovvero al primo avvio del programma
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 19:20:59
grazie fsurfing ma lo posso fare con le cartelle??dovrei copiare una cartella...come faccio??sempre COPY dir TO home???
per la scritta sai qualcosa??
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 01 Febbraio 2009, 19:33:49
per le cartelle temo che tu debba creare prima una cartella


MkDIR  nome_cartella

e poi copiare i file

Citazione
e nella descrizione del mio pacchetto quando si installa viene scritto "This programm is writed whit Gambas",è possibile rimuovere questa frase???

non ho capito bene dove ti compare questa scritta
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 19:45:08
Citazione
e poi copiare i file

cacchio sono tanti...va be...
Citazione
non ho capito bene dove ti compare questa scritta

quando creo il pacchetto .deb e poi lo installo nella descrizione mi appare la mia descrizione e poi quella frase
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 19:53:19
sorto un ennesimo problema..se faccio
Codice: [Seleziona]
COPY "dir/*" TO "dir"

mi risponde come output "no such files or directory"
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 01 Febbraio 2009, 20:49:30
mi sa che devi copiare file  dopo file, mi pare non funzionino i caratteri jolly

ricordati pero di creare prima la directory destinazione se non esiste
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 01 Febbraio 2009, 22:43:17
ok...grazie,farò come mi hai suggerito
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 02 Febbraio 2009, 10:10:18
emh...se faccio cosi
Codice: [Seleziona]
COPY "file.zip" TO "/home/*/file.zip"

mi risponde "files or directory don't exist"
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 02 Febbraio 2009, 12:35:43
perche quell ' asterisco

scritto cosi devi avere una cartella che si chiama *

fai cosi:


COPY "file.zip" TO "user.home" & "/" & "nomecartella" & "/" & file.zip"
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 02 Febbraio 2009, 14:18:16
ho risolto cosi
Codice: [Seleziona]
COPY "file.zip" TO User.Home & "/file.zip" 
SHELL "unzip file.zip"
SHELL "rm -f file.zip"

volevo sapere se posso far fare quelle righe una sola volta,altrimenti ogni volta che si apre il programma esegue quelle righe...
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 02 Febbraio 2009, 14:39:13
risolto mettendo l'opzione "unzip -o file.zip",cioè sovrascrivere.
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 02 Febbraio 2009, 16:51:03
per evitare che te lo faccia ad ogni avvio ti conviene scrivere una procedura di controllo se il file esiste già, qualcosa del genere

Codice: [Seleziona]

IF not exist user.home & "/file.zip" then
     COPY "file.zip" TO User.Home & "/file.zip"
     SHELL "unzip file.zip"
   
ENDIF
 

in questo modo se non esiste il file copia e scompatta il tutto

secondo me è preferibile mettere tutti i file all' interno di una cartella magari nascosta per evitare di "sporcare" troppo la home del tipo:

Codice: [Seleziona]

IF not exist user.home &  "/.cartellaprogramma/file.zip" then
     COPY "file.zip" TO User.Home & "/.cartellaprogramma/file.zip"
     SHELL "unzip .cartellaprogramma/file.zip"
   
ENDIF
 
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 02 Febbraio 2009, 17:03:06
grazie fsurfing della pazienza ma è sorto un'altro problema...:)
Il mio scopo è quello di aggiungere ad un file una righa ma non riesco.
ci sono 7 opzioni con sette righe da scrivere,io volevo far in modo che posso attivare una o piu opzioni insieme...
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 02 Febbraio 2009, 17:53:02
spiegati meglio

che tipo di file è?

se è un file di testo non è un problema

se il file in questione è un file per il settaggio della tua applicazione ti consiglio di usare il componente gb.settings
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 02 Febbraio 2009, 18:10:21
è un file .cfg...io ho sette opzioni e volevo far si che posso o attivare una sola opzione,o 2,o 3,... fino a sette contemporaneamente...
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 02 Febbraio 2009, 20:25:06
se le varie opzioni vengono attivate /disattivate semplicemente tramite l' inserimento di un commento ad inizio riga puoi usare qualcosa del genere

dim hstring as string
dim righe as string[]

file.load(percorsofile)'carichi il file

'dividi le varie righe

righe=split(hstring, "\n","  ",true )

ora nell' array righe avrai il tuo file suddiviso in righe che puoi abilitare con ad esempio il carattere #

mettiamo che vuoi commentare la terza righa:


dim riga as string

riga=righe[2] 'ricordati che l' indice dell array inizia da zero

riga="#" & riga
righe.fill(riga,2,1)
'ora devi salvare la modifica nel file

hstringa=""
for i=0 to righe.count-1
  hstringa=hstringa & "\n"
next

file.save(hstringa,percorsofile)
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 03 Febbraio 2009, 15:39:51
io avevo fatto cosi:
Codice: [Seleziona]
IF CheckBox1.Value = TRUE       SHELL "echo opzione_1>> file.cfg"       END IF 
IF CheckBox2.Value = TRUE       SHELL "echo opzione_2>> file.cfg"       END IF  
IF CheckBox3.Value = TRUE       SHELL "echo opzione_3>> file.cfg"       END IF
IF CheckBox4.Value = TRUE       SHELL "echo opzione_4>> file.cfg"       END IF
IF CheckBox5.Value = TRUE       SHELL "echo opzione_5>> file.cfg"       END IF
IF CheckBox6.Value = TRUE       SHELL "echo opzione_6>> file.cfg"       END IF
IF CheckBox7.Value = TRUE       SHELL "echo opzione_6>> file.cfg"       END IF
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 03 Febbraio 2009, 17:41:17
in gambas come in altri linguaggi ci sono molti modi di fare le stesse cose

l' importante è usarne uno che ti piaccia e ti soddisfi appieno

personalmente non mi piace usare troppo la schell ..sarebbe come ammettere che quell' operazione non riesco a farla con quello che offre il linguaggio gambas.

Non so esattamente quello che devi fare ma se il file di configurazione che devi modificare è relativo al tuo programma gambas, quindi lo puoi realizzare a tuo piacimento è molto + elegante utilizzare il componente gb.settings creato appositamente per gestire i file di configurazione della propria applicazione

esempio

devo salvare le opzioni scelte in file?:
Codice: [Seleziona]
 
PUBLIC SUB Button1_Click()

'salvataggio opzioni

 Settings["opzioni/1"] = CheckBox1.Value
 Settings["opzioni/2"] = CheckBox2.Value
 Settings["opzioni/3"] = CheckBox3.Value
 Settings["opzioni/4"] = CheckBox4.Value
 Settings["opzioni/5"] = CheckBox5.Value
 Settings["opzioni/6"] = CheckBox6.Value
 Settings["opzioni/7"] = CheckBox7.Value
 


  Settings.Save

END

devo caricare le opzioni?:

Codice: [Seleziona]

PUBLIC SUB Button2_Click()

'caricamento opzioni

 CheckBox1.value = Settings["opzioni/1", -1]
 CheckBox2.value = Settings["opzioni/2", -1]
 CheckBox3.value = Settings["opzioni/3", -1]
 CheckBox4.value = Settings["opzioni/4", -1]
 CheckBox5.value = Settings["opzioni/5", -1]
 CheckBox6.value = Settings["opzioni/6", -1]
 CheckBox7.value = Settings["opzioni/7", -1]
 
END
 


il file di configurazione viene salvato in

home/tuonome/.config/gambas/nometuaapplicazione.conf

ricordati di abilitare il componente gb.settings prima di uasare questo codice
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 03 Febbraio 2009, 21:18:06
non hai capito...io volevo modificare un file che non centra nulla con gambas..
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: md9327 - 03 Febbraio 2009, 23:16:25
In effetti, leggendo questa discussione, non è ben chiaro il concetto...

Se ho capito qualcosa, forse il nostro amico vuole aggiungere una riga di testo ad un file esistente (o altrimenti crearlo e poi aggiungere).
Questo lo si può fare in svariati modi:

a) usare i metodi statici della classe File di Gambas;
b) usare i comandi OPEN, READ, WRITE, CLOSE, sempre di Gambas;
c) usare una SHELL, inviando idonei comandi.

Come ha detto fsurfing, solo se nessuna delle funzionalità di Gambas ha la possibilità di fare una determinata operazione, allora si ricorre ad una chiamata al sistema operativo (vedi SHELL o EXEC).

Se invece vuoi aggiungere file (come ho visto da alcuni esempi in questa discussione) ad un file compresso (es. uno zip), allora la questione è più complessa, ovvero: decomprimere l'eventuale file esistente in una directory temporanea; aggiungere il nuovo file a questa directory, comprimere il tutto nuovamente.
Anche in questo caso si hanno due alternative:

a) usare la classe Compress di Gambas;
b) usare il comando SHELL per eseguire l'apposito programma di compressione.

Nel primo caso, la classe Compress non è compatibile con tutti i formati di compressione; nel secondo caso, è necessario essere sicuri che il programma desiderato esista, e sapere anche che parametri usare per l'operazione.
Sempre nel secondo, occorre conoscere un poco di shell scripting (di norma si usa bash), altrimenti le cose diventano molto complicate.
L'esecuzione di una serie di comandi in bash, può essere fatta, dichiarando sulla stessa riga tutta la sequenza dei comandi da eseguire, separati da un punto e virgola (;). Se non si verificano errori, i comandi vengono eseguiti tutti in sequenza, altrimenti l'esecuzione si blocca sul comando che ha provocato l'errore.
Un esempio:
Codice: [Seleziona]

SHELL "cd /tmp; ls -la; cd $HOME"

vengono esesuiti tre comandi: spostamento nella directory /tmp di sistema, lista dei file presenti nella directory, ritorno alla directory utente.
L'ultimo comando determina il valore di ritorno (o codice di errore) dell'intera operazione, gli altri vengono persi.
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 04 Febbraio 2009, 16:34:53
ora il mio obbiettivo è aggiungere a un file esistente(esterno da gambas) delle opzioni(7 per la precisione),però voglio far si che posso sia attivare o 1 o 2 contemporaneamente,etc fino a un numero di 7 comtemporaneamente
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: - 04 Febbraio 2009, 16:56:08
azz certo che ne avete di pazienza  :-o
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: fsurfing - 04 Febbraio 2009, 18:50:47
se ci posti il file in questione e il tipo di righa/e che vuoi aggiungere la soluzione potrebbe essere migliore
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 04 Febbraio 2009, 20:21:58
il file è questo è allegato
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Stopped - 06 Febbraio 2009, 22:30:36
up
Titolo: Re: [UBUNTU].sh,.so e descrizione
Inserito da: Ceskho - 06 Febbraio 2009, 23:37:39
Non c'è bisogno di uppare le tue stesse discussioni se sei stato tu l'ultimo a rispondere...