Gambas-it

Gambas3 => Programmazione => Topic aperto da: astragalo - 09 Aprile 2021, 21:37:14

Titolo: Chiarimento su lettura processo
Inserito da: astragalo - 09 Aprile 2021, 21:37:14
Ciao a tutti, avrei una domanda per i più esperti di Gambas.

Sto utilizzando questo codice per leggere un processo:

Codice: [Seleziona]
Dim sStr As String
 
  Read #$hProcess, sStr, -256

poi il codice prosegue a fare quello che deve.

La domanda è questa,  il valore -256 va ad indicare di leggere blocchi da 256 byte, che vantaggi può dare se aumentato  o che problemi crea se troppo basso.
Nel mio programma vado ad analizzare le stringhe prodotte da comandi eseguiti in bash con output anche molto lunghi e volevo capire come ottimizzarli

Grazie in anticipo
Titolo: Re:Chiarimento su lettura processo
Inserito da: Gianluigi - 09 Aprile 2021, 23:38:35
Si potrebbe affermare che il segno meno davanti al numero di byte da leggere ti garantisce dallo sforamento, ad esempio se io devo leggere un processo come questo:

Codice: [Seleziona]
Private myprocess As Process

Public Sub Button1_Click()

 myprocess.Begin
 Write #myprocess, "test"
 myprocess.Send

End

Public Sub Form_Open()

 myprocess = Exec ["cat"] For Read Write As "rr"

End

Public Sub rr_read()
 
Dim sStr As String = Read #myprocess, -40

Print sstr
 
End

Essendo myprocess di 4 byte se non mettessi il meno davanti a 40 otterrei un errore.
Il meno ti garantisce la lettura fino all'ultimo byte e non oltre.

Ma l'esperto in materia è vuott, spero vorrà completare il ragionamento.

 :ciao:
Titolo: Re:Chiarimento su lettura processo
Inserito da: vuott - 10 Aprile 2021, 00:17:10
Ma l'esperto in materia è vuott
(https://i.pinimg.com/originals/03/65/9f/03659ff8d8b7bbf3fa2ad49b98ec8424.gif)



...spero vorrà completare il ragionamento.
Io confermo quanto detto da Gianluigi.
Modificando il valore del terzo parametro e mantenendo il segno negativo, vari semplicemente la quantità di byte letti dalla funzione "Read", preservando la garanzia (grazie a quel segno "meno") di non superare nella lettura il numero totale di byte del flusso aperto (...e quindi di non incorrere nell'errore "End of File").


Titolo: Re:Chiarimento su lettura processo
Inserito da: astragalo - 10 Aprile 2021, 15:10:42
Grazie per le risposte, ora il concetto mi è più chiaro.

Quindi in linea teorica più è grande il numero e meglio è....

Giusto per farvi capire i miei dubbi, mediante un processo eseguo un terminale a cui passo il comando:

Codice: [Seleziona]
 dnf list |grep nomepacchetto 

dopo di che leggo il processo e quindi analizzo l'output per estrarre il nome del pacchetto, eliminano versione e repo in cui si trova e lo mando ad una listbox.

Per ricerche abbastanza definite il tutto funziona. Ma se la ricerca è vaga, tipo  ....grep lib, con tante voci, vengono fuori degli sbagli cioè qualche nome non viene inserito nella listbox, o per ricerche consecutive in cui ricerco installati, non installati e aggiornamenti con comandi inviati in automatico appena termina quello precedente,  alcuni nomi della prima ricerca finiscono sulla seconda.

Non so se sono riuscito a spiegarmi, in caso contrario mi scuso :)

 
Titolo: Re:Chiarimento su lettura processo
Inserito da: Gianluigi - 10 Aprile 2021, 16:44:44
Non dimenticare la parola chiave WAIT se vuoi concatenare i comandi, altrimenti il secondo comando inizierà prima della fine del primo!

Vedi:
http://gambaswiki.org/wiki/lang/exec?l=it
http://gambaswiki.org/wiki/lang/shell?l=it
Titolo: Re:Chiarimento su lettura processo
Inserito da: astragalo - 10 Aprile 2021, 16:55:24

Grazie del consiglio, ho provato ad usarla ma sembra non funzionare o molto più probabilmente non credo di usarla nel modo giusto.

Cerco di buttare già un esempio di utilizzo da postare.

Capisco che così sia difficile aiutarmi....
Titolo: Re:Chiarimento su lettura processo
Inserito da: vuott - 10 Aprile 2021, 16:58:38
Cerco di buttare già un esempio di utilizzo da postare.

...sarebbe meglio, sì.