Autore Topic: Cambio lingua run-time  (Letto 3700 volte)

Offline g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
Cambio lingua run-time
« il: 30 Settembre 2015, 16:59:09 »

Salve a tutti.
Ho un problema sul cambio di lingua durante l'esecuzione del programma. L'esigenza è quella di visalizzare la data-ora corrente in due lingue diverse. Sfruttando la System.Language sono riuscito nel mio intento, però eseguendo tale cambio ad ogni secondo, non so per quale motivo continua ad incrementarsi la memoria condivisa fino a portarla al crash dell'applicazione. Allego i passaggi che esegue il programma:

Codice: [Seleziona]
PUBLIC SUB Timer1_Timer()

  DIM st, st1 AS String

  st = System.Language
  System.Language = "cs_CZ.UTF-8"
  st1 = Format$(Now, "dddd dd mmmm yyyy  hh:nn:ss")
  System.Language = "en_US.UTF-8"
  DataLbl.Text = st1 & "\n" & Format$(Now, "dddd dd mmmm yyyy  hh:nn:ss")
  System.Language = st
 
END

Riuscite a dirmi dove sbaglio o eventuali suggerimenti per ottenere lo stesso risultato.

Grazie a tutti

Giovanni Grandi

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.139
  • Tonno verde
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #1 il: 30 Settembre 2015, 20:44:19 »

Salve a tutti.
Ho un problema sul cambio di lingua durante l'esecuzione del programma. L'esigenza è quella di visalizzare la data-ora corrente in due lingue diverse. Sfruttando la System.Language sono riuscito nel mio intento, però eseguendo tale cambio ad ogni secondo, non so per quale motivo continua ad incrementarsi la memoria condivisa fino a portarla al crash dell'applicazione. Allego i passaggi che esegue il programma:

Codice: [Seleziona]
PUBLIC SUB Timer1_Timer()

  DIM st, st1 AS String

  st = System.Language
  System.Language = "cs_CZ.UTF-8"
  st1 = Format$(Now, "dddd dd mmmm yyyy  hh:nn:ss")
  System.Language = "en_US.UTF-8"
  DataLbl.Text = st1 & "\n" & Format$(Now, "dddd dd mmmm yyyy  hh:nn:ss")
  System.Language = st
 
END

Riuscite a dirmi dove sbaglio o eventuali suggerimenti per ottenere lo stesso risultato.

Grazie a tutti

Giovanni Grandi

Ciao Giovanni,
non vorrei dare una risposta sciocca o banale ma per far apparire le date in modo diverso non basta Format$ perché fare tutto quel pastrocchio non riesco a capire puoi spiegarmi meglio?
Per dire potrebbe bastarti una cosa del genere o no?
Codice: [Seleziona]
TextBox1.text = Format$(Now, "dd/mm/yyyy")
TextBox2.Text = Format$(Now, "mm/dd/yyyy")
:ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #2 il: 30 Settembre 2015, 21:17:38 »

No. Non si tratta di una semplice formattazione diversa dell'output, ma di presentare la data-ora in lingua Ceca e la stessa data-ora in lingua Inglese. Per fare questo mi sono appoggiato alla lingua di sistema che passa alla Format$ i mesi e giorni nella forma corretta. Non so se esista un'altro modo per fare questo...

Ciao, Giovanni

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.252
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #3 il: 30 Settembre 2015, 21:32:38 »
Ad ogni modo, provando il tuo codice anche con l'inserimento del comando bash free , non mi pare di riscontrare i problemi di memoria da te sollevati.    :-\
« 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.139
  • Tonno verde
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #4 il: 30 Settembre 2015, 22:00:11 »

No. Non si tratta di una semplice formattazione diversa dell'output, ma di presentare la data-ora in lingua Ceca e la stessa data-ora in lingua Inglese. Per fare questo mi sono appoggiato alla lingua di sistema che passa alla Format$ i mesi e giorni nella forma corretta. Non so se esista un'altro modo per fare questo...

Ciao, Giovanni

Potresti ottenere il giorno, il mese e l'anno con le funzioni WeekDay, Month, Year e poi scriverle nelle lingue che vuoi e assemblarle come vuoi.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.252
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #5 il: 30 Settembre 2015, 23:42:28 »
Potresti ottenere il giorno, il mese e l'anno con le funzioni WeekDay, Month, Year e poi scriverle nelle lingue che vuoi e assemblarle come vuoi.
C'avevo pensato pure io, ma devo dire che la soluzione adottata da lui, invocando la proprietà System.Language è a mio avviso più elegante, breve e sicura.
« 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.139
  • Tonno verde
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #6 il: 30 Settembre 2015, 23:56:14 »
Non sono in disaccordo ma neanche completamente d'accordo, forse per troppa ignoranza, comunque Minisini ha sempre sconsigliato l'uso a runtime.
Allego esempio, con questo sistema ci puoi mettere tutti gli orpelli che desideri.  ;D
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.252
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #7 il: 01 Ottobre 2015, 00:24:57 »
...comunque Minisini ha sempre sconsigliato l'uso a runtime.

Di cosa ?
« 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 g.grandi

  • Gambero
  • **
  • Post: 51
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #8 il: 01 Ottobre 2015, 14:37:24 »
Citazione
Ad ogni modo, provando il tuo codice anche con l'inserimento del comando bash free , non mi pare di riscontrare i problemi di memoria da te sollevati.    :-\

Il problema lo noto aprendo il monitor di sistema. Ad ogni iterazione del programma, la memoria condivisa aumenta di 48 byte.

Ho chiesto aiuto nella speranza che qualcuno si fosse già imbattuto in un problema del genere. Ma se non vi è soluzione vedo di ripiegare sull'alternativa  proposta da Gianluigi. Grazie comunque per la collaborazione.

Giovanni

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.139
  • Tonno verde
    • Mostra profilo
Re:Cambio lingua run-time
« Risposta #9 il: 01 Ottobre 2015, 14:40:56 »
...comunque Minisini ha sempre sconsigliato l'uso a runtime.

Di cosa ?

Dell'oggetto della discussione  ;D
Minisini sconsiglia il cambio della lingua a runtime perché non è possibile variare certi aspetti dopo l'avvio della grafica, tutto lì... l'ho voluto rammentare.
Ho fatto il profiling delle due applicazioni (cambiando il ceco con l'italiano) la mia nello spazio di 69 secondi risparmia circa 9000000 di loop.
Non so se può essere un dato indicativo.
 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro