Autore Topic: Inserire il contenuto di TextEdit.Text in un file .html  (Letto 1051 volte)

Offline pgiagno

  • Gamberetto
  • *
  • Post: 7
    • Mostra profilo
Inserire il contenuto di TextEdit.Text in un file .html
« il: 24 Ottobre 2011, 18:23:32 »
Sono nuovo di questo forum ed ho un problema che ritengo di semplice soluzione per un esperto.
L'utente del mio programma scrive un testo all'interno di una TextEdit. Alla pressione di un bottone il testo viene trasferito in un file tipo .html (obbligatorio) e successivamente stampato con LibreOffice.
Il programma funziona, ma in testa al file compaiono due caratteri generalmente non stampabili che vorrei evitare.
Ho estratto una parte del codice per fare delle prove. E' il seguente:

PUBLIC SUB ReadBtn_Click()
sMoreLines = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">" &
    "<HTML>" &
    "<HEAD>" &
    "<META HTTP-EQUIV=\"CONTENT-TYPE\" CONTENT=\"text/html; charset=utf-8\">" &
    "<TITLE></TITLE>" &
    "<STYLE TYPE=\"text/css\">" &
    "<!--" &
    "@page { size: 14.8cm 21cm; margin: 1cm }" &
    "P { margin-bottom: 0.21cm }" &
    "-->" &
    "</STYLE>" &
    "</HEAD>" &
    "<BODY LANG=\"it-IT\" DIR=\"LTR\">" &
    "<P STYLE=\"margin-bottom: 0cm\"><FONT FACE=\"Liberation Sans, sans-serif\">" &
    "<FONT SIZE=4><I><B>QUESTA E' LA PRIMA RIGA</B></I></FONT><BR>" &
    "<FONT SIZE=2>QUESTA E' LA SECODA RIGA<BR>" &
    "QUESTA E' LA TERZA RIGA<BR>" &
    "QUESTA E' LA QUARTA RIGA</FONT></P></BODY>"
  TextEdit1.Text = sMoreLines
END

PUBLIC SUB WriteBtn_Click()
  DIM NomeFile AS String
  DIM hFile AS File
  
  NomeFile = "/home/piero/TxtFile.html"
  hFile = OPEN NomeFile FOR CREATE
  WRITE #hFile, sMoreLines
  CLOSE #hFile
  
END

Aprendo il file TxtFile.html con gedit si evidenziano questi due caratteri in prima e seconda posizione:

‚<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.......

Vorrei poterli evitare. Dove sbaglio?
Grazie.
« Ultima modifica: 24 Ottobre 2011, 18:26:02 da pgiagno »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #1 il: 25 Ottobre 2011, 10:10:58 »
Sei sicuro di non averli messi per errore nel codice?
Ad ogni modo, se si presentano regolarmente potresti usare Mid(text,3) per tagliarli dalla stringa.

Però, un'analisi più approfondita potrebbe farci capire se si tratta di un'anomalia di Gambas, oppure altro.
Potresti stampare sulla console il codice Ascii dei due caratteri, perchè quello che hai postato non è detto che sia corrispondente al verso carattere contenuto nella stringa:
Codice: [Seleziona]
PRINT ASC(sMoreLines,1)

Inoltre, perchè non l'ho capito dalla tua descrizione, il testo viene digitato dall'utente direttamente nella TextEdit, oppure lo inserisci tu da codice?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #2 il: 26 Ottobre 2011, 01:32:58 »
Per curiosità ho fatto qualche prova. Sembrerebbe che quei caratteri siano condizionati (e forse determinati) dal testo che va a riempire la variabile "sMoreLines".

Nelle prove che ho compiuto sono riuscito ad eliminare uno dei due caratteri, ma non anche il secondo, che ho notato varia a seconda delle modifiche che si apportano ad alcune parti (anche di un solo carattere) del testo.
« Ultima modifica: 26 Ottobre 2011, 17:01:20 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 pgiagno

  • Gamberetto
  • *
  • Post: 7
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #3 il: 26 Ottobre 2011, 11:28:55 »
Grazie per il vostro interessamento.

@md9327
Sono sicuro, perché se taglio i primi due caratteri dalla stringa e poi la scrivo nel file i due caratteri ricompaiono all'inizio, ma vengono tagliati i primi due effettivi ("<!") per intenderci.
Ho inserito PRINT Asc(sMoreLines,1) e PRINT Asc(sMoreLines,2). Il risultato mi da:
60
33
che sono le rappresentazioni decimali di < e !
Sono arrivato alla conclusione che si tratti di caratteri che vengono inseriti dall'istruzione WRITE #hFile, sMoreLines nel file di destinazione. Dal momento che il file viene stampato con le istruzioni:
sStamp = "soffice --writer --nologo -p " & sMoreLines
SHELL sStamp
i due caratteri iniziali (sempre diversi a seconda del testo) vengono stampati.
Il testo viene inserito in parte da repository predisposti, ma concede la facoltà di correzioni e aggiunte. E' un programma pensato per referti e ricette mediche, dove coesistono parti standard (che è inutile digitare tutte le volte, ma che debbono poter sopportare correzioni [maschile/femminile]) e parti non standard (ad es. nome paziente) da aggiungere a mano se nuovo, o da un database se già visitato/analizzato.

@vuott
In effetti dipendono dalla quantità di caratteri del testo e (sembra) poco dalla qualità. devo fare alcune prove inserendo lo stesso quantitativo di differenti caratteri per vedere cosa succede. Se i primi due caratteri del file restano uguali sono (probabilmente) una specie di indicatore numerico della quantità, se differiscono sono (probabilmente) una specie di checksum

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #4 il: 26 Ottobre 2011, 15:54:55 »
Ti comunico che ho fatto una prova ora su Kubuntu (presente KDE).

Ho lanciato il tuo codice senza fare alcuna modifica e.... miracolosamente  ??? quei due caratteri "incriminati" non sono apparsi ! Tutto perfetto !  :-\

Le prove, che avevo fatto ieri, erano su Mint.

A 'sto punto non so cosa dire.   :-\
« Ultima modifica: 26 Ottobre 2011, 17:59:03 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 pgiagno

  • Gamberetto
  • *
  • Post: 7
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #5 il: 27 Ottobre 2011, 15:55:43 »
Non ho ancora avuto il tempo di fare delle prove esaustive.
Penso però che se in kubuntu i due caratteri non ci sono, ci possa essere un bug nell'istruzione WRITE di Gambas 2 :o
Dovrei provare con Gambas 3, ma aspetterò che arrivi pacchettizzato per Ubuntu; sono troppo pigro e inesperto per altre soluzioni...
Ma in fondo quei due caratteri strani in cima al foglio mica ci stanno male... :'(

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Inserire il contenuto di TextEdit.Text in un file .html
« Risposta #6 il: 27 Ottobre 2011, 22:54:25 »
Dovrei provare con Gambas 3, ma aspetterò che arrivi pacchettizzato per Ubuntu; sono troppo pigro e inesperto per altre soluzioni...

Io ho fatto le prove solo con Gambas 3.
« 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. »