* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Novembre 21, 2024, 02:53:04 pm

Inserisci il nome utente, la password e la durata della sessione.

98 Visitatori, 0 Utenti

Post recenti

Pagine: 1 2 [3] 4 5 ... 10
21
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da DragoRosso il Novembre 13, 2024, 11:48:23 am »
Citazione
You can fight the Lazarus system and declare your stings as being of a certain codepage and use RawByteString to prevent the compiler form doing unwanted codepage conversion. But in the long run, you better go with the flow.

Questo può essere il tuo cavallo di battaglia....

P.S: da google traduttore  ;D
Citazione
Puoi combattere il sistema Lazarus e dichiarare i tuoi sting come appartenenti a una certa codepage e usare RawByteString per impedire al form del compilatore di effettuare conversioni indesiderate di codepage. Ma a lungo termine, è meglio seguire il flusso.
22
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da tito_livio il Novembre 13, 2024, 11:21:36 am »

Ma scusa, i dati che hai presentato sono stati inseriti con il vecchio programma ?

A questo punto non saprei aiutarti, sembra che ciò che leggi dal DB venga codificato in UTF-8 con il nuovo Lazarus. Però il problema è che i dati interni probabilmente sono in caratteri standard ANSI.

Prova a cercare in rete, se hai questo problema sicuramente anche qualcun altro l'ha avuto.

Mi sembra comunque molto strano ciò che accade, dovrebbe avere colpito tantissime applicazioni.

N.B.: comunque i dati dovrebbe "essere" in formato CP-1252 o Windows-1252 in quanto alcuni caratteri che hai presentato esistono solo in quelle codifiche.

Cerca e ricerca credo di aver capito cosa è successo.

Fra la versione 2.0.8 e la versione 2.0.10 gli sviluppatori Lazarus decidono di trattare le stringhe non più in Codepage ma in UTF8.
Che il modo di memorizzare le stringhe sia cambiato lo si può dedurre da: https://wiki.freepascal.org/String.
Io non cambio spesso la versione di Lazarus perché ad ogni cambio ci sono parecchie cose da risistemare ma ogni tanto si deve fare.
In altri miei progetti avevo inserito un comando del tipo:
Codice: [Seleziona]
MySQL50Connection1.CharSet := 'utf8';
fin dalle prime versioni quindi non mi sono accorto di niente anche compilando con un nuovo Lazarus.
In questo vecchio progetto avevo lasciato fare a Lazarus, quindi il programma scriveva e leggeva in CP1252.
I dati che ti ho presentato erano stati scritti col vecchio programma, il nuovo programma assume che siano stati scritti in UTF8 quindi, quando legge, li decodifica con l'algoritmo sbagliato.
Ci sono anche altri che sono rimasti "fregati" da questo cambiamento (che credo giusto anche se doloroso), come si può vedere da: https://forum.lazarus.freepascal.org/index.php/topic,53250.0.html?PHPSESSID=8bn5bmfl99i3s8poqo6ht6dn63.
Non credo sia possibile impostare Lazarus moderno per fargli trattare le stringhe in codepage, per cui col nuovo programma mi andrò a fare una routine di conversione.
Per questa conversione c'è il modo suggerito da @bonmario e un altro nell'ultimo link che ho messo, vedrò di mettere su qualcosa.

Vi faccio sapere,
ciao
23
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da DragoRosso il Novembre 13, 2024, 10:00:21 am »
In allegato ho messo lo screenshot per i valori della variabile in esadecimale.
Il valore che dovrebbe visualizzare è: àèìòù @€#

I valori passati sono una combinazione già UTF-8 con "caratteri di controllo", per aggiungere una dieresi ad esempio ad una lettera normale.
Quella stringa è già stata elaborata e non è usabile.

Ma scusa, i dati che hai presentato sono stati inseriti con il vecchio programma ?

A questo punto non saprei aiutarti, sembra che ciò che leggi dal DB venga codificato in UTF-8 con il nuovo Lazarus. Però il problema è che i dati interni probabilmente sono in caratteri standard ANSI.

Prova a cercare in rete, se hai questo problema sicuramente anche qualcun altro l'ha avuto.

Mi sembra comunque molto strano ciò che accade, dovrebbe avere colpito tantissime applicazioni.

N.B.: comunque i dati dovrebbe "essere" in formato CP-1252 o Windows-1252 in quanto alcuni caratteri che hai presentato esistono solo in quelle codifiche.
24
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da bonmario il Novembre 13, 2024, 08:24:18 am »
Codice: [Seleziona]
MySQL50Connection1.CharSet := 'CP1252';
mi da errore:
Failed to set connection character set: Can't initialize character set cp1252 in c:\program Files\MySql\MySql server 5.0\share\charsets\
E in effetti in quella cartella CP1252.xml non c'è mentre ci sono altri codepage come cp1250,cp1252 ecc.

Prova a vedere se con questa risolvi:
Codice: [Seleziona]
  function ConvertiStringa(St: String; TipoConvStr: TTipoOperConvStr): String;
  begin
    {$IFDEF MSWINDOWS}
      case TipoConvStr of
        tocLeggi: St:={CP1252ToUTF8(St)}WinCPToUTF8(St);
        tocScrivi:  St:={UTF8ToCP1252(St)}UTF8ToWinCP(St);
      end;
    {$ENDIF}
    Result:=St;
  end;

Di solito era la mia ultima spiaggia quando non avevo più voglia di sbatterci la testa...
Per usarla, devi aggiungere "LazUTF8" alla uses.

P.S. Se non funziona con tocLeggi, prova con tocScrivi


Ciao, Mario
25
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da tito_livio il Novembre 12, 2024, 10:58:25 pm »
Mi riesci a passare i valori esadecimali della stringa che leggi e i caratteri che dovrebbero essere visualizzati ... in cinque minuti dovrei risolverti il problema.
Ok grazie per la spiegazione, avevo capito un'altra cosa.
In allegato ho messo lo screenshot per i valori della variabile in esadecimale.
Il valore che dovrebbe visualizzare è: àèìòù @€#

Invece visualizza altri caratteri strani. Per quello che ho trovato in rete la vecchia codifica dovrebbe essere cp1252 o win-1252 che dovrebbe essere la stessa cosa.
Sempre grazie per la tua disponibilità,
ciao

Aggiungo: non ho messo la colonna data address ma risulta vuota come nel tuo esempio
26
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da DragoRosso il Novembre 12, 2024, 09:44:17 pm »
Mi potresti spiegare come si fa a far apparire il debbugger con i valori esadecimali della stringa?
Scusami ma io i valori in esadecimali non li guardo ed adesso non mi appaiono.

Metti un breakpoint dopo l'assegnazione, quando il programma si ferma selezioni la variabile e con il tasto destro del mouse vai a DEBUG / AGGIUNGI A WATCH.

Vai nella finestra di WATCH e seleziona l'espressione, poi premi il tasto in alto "chiave inglese-cacciavite" e imposta la finestra di set come nell'allegato.

"RIPETI CONTEGGIO" DEVI VALORIZZARLO CON LA LUNGHEZZA DELLA STRINGA (ANCHE SE IL VALORE ECCEDE NON IMPORTA).
27
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da tito_livio il Novembre 12, 2024, 07:41:32 pm »
se usi windows è quindi certo che il charset usato dal DB sia CP1250
quindi dovresti assicurarti che quando ti connetti come client, lo fai con lo stesso charset
quando dici che già usi
Codice: [Seleziona]
MySQL50Connection1.CharSet := 'CP1250';
dovrebbe funzionare...

per curiosità, nel backup, se guardi nelle INSERT le lettere accentate sono corrette vero?
Ho provato a mettere quella istruzione, impostando il charset cp1250, ma non funziona, lettere illegibili. Anche nel Backup le lettere appaiono illeggibili.

Da notare che se eseguo nel lazarus nuovo:
Codice: [Seleziona]
showmessage(inttostr(sqlquery1descriz.CodePage))
ottengo 1252.
Nel lazarus vecchio (2.0.6) questa proprietà non esiste.
Poi se imposto, sempre nel nuovo:
Codice: [Seleziona]
MySQL50Connection1.CharSet := 'CP1252';
mi da errore:
Failed to set connection character set: Can't initialize character set cp1252 in c:\program Files\MySql\MySql server 5.0\share\charsets\
E in effetti in quella cartella CP1252.xml non c'è mentre ci sono altri codepage come cp1250,cp1252 ecc.
28
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da nomorelogic il Novembre 12, 2024, 06:34:47 pm »
se usi windows è quindi certo che il charset usato dal DB sia CP1250
quindi dovresti assicurarti che quando ti connetti come client, lo fai con lo stesso charset
quando dici che già usi
Codice: [Seleziona]
MySQL50Connection1.CharSet := 'CP1250';
dovrebbe funzionare...

per curiosità, nel backup, se guardi nelle INSERT le lettere accentate sono corrette vero?
29
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da tito_livio il Novembre 12, 2024, 06:15:45 pm »
Basta anche che copi uno screenshot del debgger con i valori esadecimali (o anche decimali se ti và meglio), sempre però con i caratteri equivalenti che dovrebbero apparire nell'ordine.

Mi potresti spiegare come si fa a far apparire il debbugger con i valori esadecimali della stringa?
Scusami ma io i valori in esadecimali non li guardo ed adesso non mi appaiono.

Edit:
se ad esempio fai un backup - che in fondo è uno script SQL - al suo interno puoi trovare sia le varie "CREATE" che le "INSERT"...

Fatto, questo è quello che compare: DEFAULT CHARSET=latin1. Ottenuto con un dump del database.
30
Databases / Re:Caratteri non più leggibili con le nuove versioni di Lazarus
« Ultimo post da DragoRosso il Novembre 12, 2024, 05:27:56 pm »
I dati sono stati scritti probabilmente nel codepage della lingua usata al momento, che era lo standard per tutti gli applicati che non erano UNICODE.

Ma, essendo stati solo scritti a un solo carattere, ossia senza combinazioni UTF-8, sicuramente il DB non li ha convertiti in UTF8, li ha presi così come sono (fatto salvo i caratteri di "controllo" per certi valori sopra il codice ASCII 140 che possono alterare in lettura gli stessi caratteri).

Quindi dovrebbe essere relativamente semplice trovare la codifica giusta ....

Mi riesci a passare i valori esadecimali della stringa che leggi e i caratteri che dovrebbero essere visualizzati ... in cinque minuti dovrei risolverti il problema.

Basta anche che copi uno screenshot del debgger con i valori esadecimali (o anche decimali se ti và meglio), sempre però con i caratteri equivalenti che dovrebbero apparire nell'ordine.
Pagine: 1 2 [3] 4 5 ... 10

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 117
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 98
Total: 98

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.