* * * *

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.
Dicembre 03, 2024, 06:21:01 pm

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

70 Visitatori, 1 Utente
 

Autore Topic: messaggio econvertitor  (Letto 15832 volte)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
messaggio econvertitor
« il: Gennaio 19, 2013, 07:02:57 pm »
perchè quando lancio il programma e provo una divisione mi dice che 10,00 non è un float valido ???
l'ho dichiarato come currency e ho appurato che è compatibile con strToFloat !!!
il currency non è un valore decimale ?


ciao e grazie in anticipo!!!

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #1 il: Gennaio 19, 2013, 08:19:45 pm »
puoi postare codice e messaggio d'errore?

così non è facile, viene solo da chiedere se hai scritto il numero con la virgola anziché col punto :)
Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #2 il: Gennaio 20, 2013, 10:05:18 am »
sì il numero è scritto con la virgola !
però io ho inserito i dati nel database usando sqliteAdmin ; io ho messo solo il 10 e quando salvo viene visualizzato così: 10,00 !

ciao

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #3 il: Gennaio 20, 2013, 11:20:36 am »
immagino che l'altro topic si riferisca allo stesso problema
comunque:
se hai inserito un valore in un database con sqliteAdmin e l'istruzione è andata a buon fine, vuol dire che nel database il valore è giusto.

probabilmente nell'interrogare il database ti viene restituito formattato con la virgola
Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #4 il: Gennaio 20, 2013, 11:32:13 am »
mi spiego:
se ho una variabile spesa:currency;
quando cerco di usare la conversione strToFloat:
spesa:=strtofloat(dbedit1.Text);

mi dice che 10,00 che si trova nel dbedit1 non è un valore FLOAT valido e mi genera un'eccezione!

ciao

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #5 il: Gennaio 20, 2013, 12:01:19 pm »
nella proprietà Text del TDbEdit ci trovi il numero formattato con le regole della localizzazione: cioè con il separatore decimale che è a virgola.
dovresti valorizzare 'spesa' con il valore contenuto nel campo del dataset, lo stesso campo che è specificato in TDbEdit e che gli da il valore.

Se devi usare il valore inText, devi prima convertire la "," in "." e poi usi StrToFloat, ma l'approccio giusto è quello sopra.
Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #6 il: Gennaio 20, 2013, 12:45:03 pm »
valorizzare spesa in che modo ? usando editMask ?
esiste una proprietà che assegna al dbEdit un formato predefinito ?

oppure intendevi altro ?

ciao

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #7 il: Gennaio 20, 2013, 12:51:01 pm »
veramente ho già provato e vedo che quello che intendevo io non si può fare perchè gestito dal campo abbinato al db : è già vincolato al tipo di dato e non mi lascia inserire un valore di 10.00 ,ma solo 10 e poi mette la virgola oppure 10,00 che accetta così

ciao

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #8 il: Gennaio 22, 2013, 01:40:35 pm »
secondo voi se cambio il valore del campo da currency a FLOAT non otterrei più quel problema ?

ciao

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #9 il: Gennaio 22, 2013, 05:06:07 pm »
non credo cambi molto

devi valorizzare la variabile "spesa" leggendo il valore da: dataset.nomecampo.Asfloat
Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #10 il: Gennaio 22, 2013, 06:19:22 pm »
allora io ragionavo così : per fare le operazioni che mi interessano tra i vari campi del dataset trasformo la stringa contenuta nella casella in FLOAT (spesa1:=strtofloat(dbedit1.Text);) quindi penso di usare un float ! quando invece faccio ad es. l'operazione spesa1+spesa2=spesaTotale
l'eccezione mi dice che quel 10,00 che trova in dbedit1 non è un float valido!
è sicuro che sbaglio qualcosa IO ,il computer esegue e basta, ma non riesco a capire cosa !?

ciao e grazie per la pazienza!
p.s.:per evitare di riscrivere tutto ho copiato un po' di codice dal mio progetto in delphi dove avevo già lavorato parecchio per far funzionare il tutto e mi aspettavo che andasse bene anche in lazarus!
c'è qualcosa che mi sfugge...forse è nel diverso db!!!!!!!

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #11 il: Gennaio 22, 2013, 06:28:37 pm »
allora:

in TDBEdit.Text c'è un valore (o meglio la rappresentazione in stringa di un valore) perchè hai una proprietà DataSource che è collegata ad una query su un database. Non solo: c'è anche l'indicazione di quale campo del dataset deve fornire il valore al TDBEdit.

Quindi non devi fare:
spesa1:=strtofloat(dbedit1.Text)
ma
spesa1:=dataset.fieldname.AsFloat

Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #12 il: Gennaio 23, 2013, 08:39:34 am »
il mio dbEdit1 noin ha una proprietà "text" ,ma solo una "datafield" !
indicare il dataset mi riusciva immediato in delphi ,ma ora in lazarus mi trovo in difficoltà !!!
infatti non riesco a indicarlo in nessun modo ... lo identifico come la tabella che uso?
nell'object inspector non lo trovo in alcun componente ;
se sostituisco pari pari le due espressioni di SPESA1 mi trovo subito nel classico errore di identifier not found (ovvio)

mi sento perso in un bicchiere d'acqua e sì che mi DIVERTO a programmare dal turbo pascal al delphi2007 ,non da ieri

ciao e grazie per la pazienza

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2927
  • Karma: +20/-4
Re:messaggio econvertitor
« Risposta #13 il: Gennaio 23, 2013, 10:03:42 am »
prova
Codice: [Seleziona]
spesa1 := DBEdit1.Datasource.DataSet.FieldByName(DBEdit1.FieldName).AsFloat;
Imagination is more important than knowledge (A.Einstein)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:messaggio econvertitor
« Risposta #14 il: Gennaio 23, 2013, 10:31:18 am »
ho messo :
DBEdit1.Datasource.DataSet.FieldByName(DBEdit1.DataField).AsFloat;

per identificare il nome del campo perchè fieldname non lo riconosce e non ammette il nome del campo della mia tabella (costo1)

però ,pur funzionando,mi ritorna lo stesso errore che mi dava all'inizio perchè forse i metodi si equivalgono ma quando trova il valore 10,00 (o altro con la virgola) mi dice "10,00 is an invalid float"

ciao

 

Recenti

How To

Utenti
  • Utenti in totale: 802
  • Latest: maXim.FI
Stats
  • Post in totale: 19235
  • Topic in totale: 2294
  • Online Today: 77
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 1
Guests: 70
Total: 71

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.