Autore Topic: Info shell  (Letto 2055 volte)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.683
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Info shell
« Risposta #30 il: 13 Dicembre 2021, 17:36:57 »
Se vuoi adattare tutto alla dimensione delle stringhe lette:

Codice: [Seleziona]
Private c As Short


' Quando c'è qualcosa da leggere dal processo di "Speedtest-cli", allora viene sollevato questo Evento di lettura dei dati:
Public Sub Speed_Read()

 Dim s As String
 
 Line Input #pr, s

' Se la larghezza orizzontale della "corrente" (or ora letta) stringa di caratteri è maggiore del valore presente nella variabile "c", allora la variabile "c" assumerà il valore della larghezza della "corrente" stringa:
 If Label1.Font.TextWidth(s & Space(5)) > c Then c = Label1.Font.TextWidth(s & Space(5))
' Il "Form" principale assume la larghezza pari al valore contenuto dalla variabile "c":
 Me.W = c
' Così anche la "Label":
 Label1.W = c
 
' Nella "Label" vengono scritti il testo precedentemente contenuto + la nuova riga or ora letta + il carattere di nuova riga a capo:
 Label1.Text &= s & "\n"

End

Amen !
« Ultima modifica: 13 Dicembre 2021, 20:09:11 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.683
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Info shell
« Risposta #31 il: 13 Dicembre 2021, 20:16:35 »
...oppure, anziché usare questa riga con un booleano esplicito:
Codice: [Seleziona]
If Label1.Font.TextWidth(s & Space(5)) > c Then c = Label1.Font.TextWidth(s & Space(5))

puoi usare la funzione nativa "Max()":
 
Codice: [Seleziona]
c = Max(Label1.Font.TextWidth(s & Space(5)), c)
« 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 Gratisweb

  • Grande Gambero
  • ***
  • Post: 186
    • Mostra profilo
Info contenuto shell
« Risposta #32 il: 05 Marzo 2023, 17:02:46 »
Ho scritto questo semplice codice che dovrebbe restituire le info della cpu ma non restituisce nulla, sbaglio qualcosa ?

  Dim cpu As String
  Shell "cat / proc / cpuinfo | grep 'model name' | uniq | awk -F ':' '{print $2}'" To cpu
  label.Text = cpu

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.683
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Info contenuto shell
« Risposta #33 il: 05 Marzo 2023, 18:08:15 »
Non ho avuto modo di provarlo, ma almeno con riferimento a questa parte - come da te riportata - del percorso specificato:
Codice: [Seleziona]
/ proc / cpuinfo
vi sono degli spazi che ovviamente non dovrebbero esserci.
Ossia correttamente:
Codice: [Seleziona]
/proc/cpuinfo

In ogni modo, poiché io sono estrememente contrario all'uso di Shell (se non in casi particolarissimi e delicati), colgo l'occasione di segnalare le pagine della nostra wiki afferenti alla cpu:
CPU e Scheda Madre
« Ultima modifica: 06 Marzo 2023, 05:48:57 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.683
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Info shell
« Risposta #34 il: 06 Marzo 2023, 15:35:11 »
Ad ogni modo mi pare che, osservando la linea di comando con Shell da te presentata, sei interessato a conoscere il contenuto del parametro "model name" della CPU presente nel file "/proc/cpuinfo".
Ebbene, poiché questo file di sistema può essere letto come fosse un file di testo, per conoscerne il contenuto, è sufficiente utilizzare le native funzioni di Gambas per la gestione delle stringhe di testo.
Pertanto, se ad esempio abbiamo un hardware costituito da una sola CPU (oppure, se multicore, fare riferimento alla prima CPU considerata dal"/proc/cpuinfo"), possiamo conoscere quanto riportato al parametro, da te ricercato ("model name "), con questo semplice codice usando la funzione Scan() nativa di Gambas:
Codice: [Seleziona]
Public Sub Main()

  Dim s As String
 
  s = File.Load("/proc/cpuinfo")
 
  s = Scan(s, "*model name*:*stepping*")[2]
 
  Print Trim(s)

End
...vi sembra così complicato da doversi appellare al comando bash "cat"  e alla funzione Shell ?  :-\
« 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 cogier

  • Gambero
  • **
  • Post: 57
    • Mostra profilo
Re:Info shell
« Risposta #35 il: 06 Marzo 2023, 16:51:01 »
In alternativa: -

Codice: [Seleziona]
 Dim sCPU As String

  Shell "lscpu | grep 'Model name:'" To sCPU
  sCPU = Trim(Replace(sCPU, "Model name:", ""))

  Print sCPU