* * * *

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.
Maggio 26, 2024, 06:58:14 pm

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

23 Visitatori, 0 Utenti

Post recenti

Pagine: [1] 2 3 ... 10
1
Generale / Re:Vista Form reale diversa da quella disegnata
« Ultimo post da petrusic il Maggio 24, 2024, 06:57:49 pm »
Due le "cose" che possono influire normalmente:

1) Le impostazioni della FORM

2) Opzioni di progetto

Entrambi le impostazioni da te segnalate sono presenti ed impostate come nelle immagini che mi hai attenzionato.
Grazie. 

Per quanto visto e provato, credo ci il dimensionamento sia vincolato  a regole di carattere generale, che, in caso di superamento di certi valori standard di sistema per la vista "normaòe", prendano il sopravvento e viene assunta l'impostazione riconosciuta per la vista a tutto schermo o al valore massimo. Infatti, nelle immagini che ho giirato inizialmente, si vede, nella barra del titolo della form evidenziata la piccola icona di schermata piena, con la possibilità di cliccare su quella di vista normale o di minimizzazione.

Devo a questo punto scegliere, se aprire la Form con una vista dimensionata con valori che rientrino nel segmento di larghezza ed altezza cosiddetti normali o se farla apparire nel formato massimizzato.

2
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da DragoRosso il Maggio 24, 2024, 03:34:25 pm »
Per chi vuole, questo è il codice per fare con processori INTEL X64 in tutti i sistemi operativi teoricamente il calcolo tra numeri interi in modo "informatico" (ciò che fà il Pascal con il DIV e il MOD.

Poi farò anche i vari overload per i tipi e per x86.

Codice: [Seleziona]
{$IFDEF CPUX64}
/// <summary> Esegue una divisione per interi fornendo come risultato quoziente e resto </summary>
/// <remarks> Esegue il calcolo da "informatico" stile tutto chiaro !!! </remarks>
function DivandMod(Dividendo: int64; Divisore: int64; var Resto: int64): int64; register;
begin
  {$ASMMODE intel}
  asm
  //Dividendo, in RCX
  //Divisore, in RDX
  //Resto, memoria puntata da R8
  //Risultato (quoziente) in RAX
  mov RAX, RCX
  mov RCX, RDX
  CQO
  //idiv esegue la divisione intera e riporta il quoziente in RAX e in RDX il resto
  idiv RCX
  //SONO EQUIVALENTI LE DUE SUCCESSIVE IN DELPHI, IN LAZARUS NO !!!
  mov QWORD PTR [R8], RDX
  //mov QWORD PTR [Resto], RDX     //SOLO X DELPHI

  end;
end;
{$ENDIF}

procedure TForm1.Button1Click(Sender: TObject);
var quoziente: integer;
    resto: int64;
    Dividendo: int64;
    Divisore: int64;
begin
  Dividendo := 9;
  Divisore := -5;
  resto := 15;
  quoziente := DivandMod(Dividendo, Divisore, resto);
  ShowMessage('Quoziente= '+quoziente.ToString+' Resto= '+resto.ToString); 
end;[/code
3
Generale / Re:Vista Form reale diversa da quella disegnata
« Ultimo post da DragoRosso il Maggio 24, 2024, 02:50:50 pm »
Due le "cose" che possono influire normalmente:

1) Le impostazioni della FORM

2) Opzioni di progetto

Entrambi le vedi negli allegati.

La prima dice alla form come visualizzarsi, indipendentemente dalla grandezza imposta se usi ad esempio "wsMaximize".

L'altra come si adegua la grafica rispetto ai  vari monitor, in particolare alla risoluzione e al DPI.
4
Generale / Vista Form reale diversa da quella disegnata
« Ultimo post da petrusic il Maggio 24, 2024, 12:54:29 pm »
Mi trovo in difficoltà nel rappresentare a video la Form2 del mio prohgramma e non riesco a capire nè il perchè msi verifica ciò, nè come fare per mostrarla, durante l'esecuzione, con le impostazioni date in programmazione.
Ho tentato in tanti modi, sia da codice, sia nella fase di disegno . Comunque faccia, riesco a produrre, in esecuzione, una vsita della Form ridotta o addirittura superiore alla grandezza fisica dello schermo,.
Le impostazioni date durante la fase di disegno sono:
Citazione
height: 891
Left: 70
Top: 65
width: 1587

quelle trovate durante l'esecuzione sono:
Citazione
height: 891
Left: 70
Top: 127
width: 1587
Allego anche le due immagini relative alla fase di disegno e quella mostrata durante l'esecuzione.

Già ieri sera ho comnciato a lavorare sulle impostazioni delle dimensioni, ma fino ad ora sempre con scarsi risultati.
Ho provatoi anche a rendere NON visilbili i gruppi dei controlli interni alla Form, ma non è cambiato niente. Nell'immagine ottenuta durante l''esecuzione, manca sempre la testata della Form1, che vorrei no sovrapporre dalla successiva Form2. E ciò succede perchè quando viene esplosa la Form2, l'immagine diventa a tutto schermo.

Non so più come procedere.



5
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da nomorelogic il Maggio 24, 2024, 11:49:21 am »
P.S.: Comunque, il fatto che Intel (e penso anche AMD ovviamente) abbia implementato proprio in HARDWARE una istruzione aderente al ragionamento che si addice a noi informatici la dice lunga.

si, diciamo che è una scuola di pensiero radicata  :)
6
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da DragoRosso il Maggio 24, 2024, 09:30:14 am »
ho chiesto ad un mio collega matematico e mi ha liquidato dicendo che in matematica il modulo per come lo intendiamo noi informatici... non esiste

nel senso che non c'è un'operazione chiamata modulo ma ci sono dei procedimenti che possono calcolarlo, se abbiamo bisogno di quel calcolo

una risposta sicuramente discutibile ma che tutto sommato rende l'idea
il tutto sta nel tipo di calcolo che si necessita

probabilmente gli informatici hanno avuto quella necessità e lo hanno implementato così
nella versione python si è voluto essere aderenti ad una certa dimostrazione matematica

come si dice: non si finisce mai di imparare :)

Edit:
è comunque mia opinione che quelli del python avrebbero dovuto lasciare il calcolo del modulo
come già era in altri linguaggi e magari introdurne un secondo tipo
infatti quello che ci rimane in mano è 1 concetto con 2 metodi di calcolo...

Hi, hi, l'hanno detto anche a me, un fisico, che si è messo a ridere e ha concluso che noi informatici ci inventiamo molto spesso la matematica "per scansare la fatica del ragionamento"

P.S.: Comunque, il fatto che Intel (e penso anche AMD ovviamente) abbia implementato proprio in HARDWARE una istruzione aderente al ragionamento che si addice a noi informatici la dice lunga.
7
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da DragoRosso il Maggio 24, 2024, 09:26:41 am »
Voglio riportarvi un esempio pratico e banale:

un encoder, contaimpulsi che "conta" in positivo o negativo a seconda se ruota in senso orario o antiorario.
Non è che se questo fà -1000 impulsi e ogni giro viene effettuato con 750 impulsi fà -2 giri   :-X :-X :-X :

Pascal: (-1000 div 750) = -1 con resto xxx ==> deduco che ha fatto un (UNO) giro in senso antiorario ad esempio.
Python: (-1000 // 750) = -2 con resto xxx ==> deduco che ha fatto due (DUE) giri in senso antiorario..... (è barrato perchè non voglio che venga preso come esempio applicabile !!!)

In Pascal senza analizzare il resto ho già i miei dati, con Python deve farmi mille elucubrazioni sul quoziente e sul resto .... Questo è un esempio pratico e banale. Poi uno potrebbe aggiustarlo come vuole con mille elucubrazioni, algoritmi e fantasie varie: ma quello indicate è il modo più veloce, naturale e efficacie che non lascia nulla alla fantasia interpretativa.
8
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da nomorelogic il Maggio 24, 2024, 09:24:38 am »
ho chiesto ad un mio collega matematico e mi ha liquidato dicendo che in matematica il modulo per come lo intendiamo noi informatici... non esiste

nel senso che non c'è un'operazione chiamata modulo ma ci sono dei procedimenti che possono calcolarlo, se abbiamo bisogno di quel calcolo

una risposta sicuramente discutibile ma che tutto sommato rende l'idea
il tutto sta nel tipo di calcolo che si necessita

probabilmente gli informatici hanno avuto quella necessità e lo hanno implementato così
nella versione python si è voluto essere aderenti ad una certa dimostrazione matematica

come si dice: non si finisce mai di imparare :)

Edit:
è comunque mia opinione che quelli del python avrebbero dovuto lasciare il calcolo del modulo
come già era in altri linguaggi e magari introdurne un secondo tipo
infatti quello che ci rimane in mano è 1 concetto con 2 metodi di calcolo...
9
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da DragoRosso il Maggio 24, 2024, 09:04:55 am »
Se cercate "Divisione Euclidea" su Wikipedia c'è la spiegazione. Pascal fa la divisione con troncamento phyton quella con parte intera.
Ciao

Si, ma non torna comunque con i calcoli di Python, dove i valori di resto sono anche negativi (nel calcolo Euclideo il resto può essere solo positivo). Quindi Python non applica quel tipo di calcolo. Applica semplicemente un calcolo float dove l'arrotondamento e una scelta progettuale.

Parto dal presupposto che è ovvio e chiaro:
Citazione
"La divisione euclidea o divisione con resto è intuitivamente quell'operazione che si fa quando si suddivide un numero a di oggetti in gruppi di b oggetti ciascuno e quindi si conta quanti gruppi sono stati formati e quanti oggetti sono rimasti".

Quindi non ci possono essere più oggetti formati come risultato (quoziente) rispetto ai gruppo suddivisi: (-6 div 5) fa -1 cioè gli informatici ritengo che i gruppi siano presi in valore assoluto e il segno si applica poi. Inoltre il minore e maggiore è sempre rilevante verso le 0 per capire cosa si stà facendo. Dire che (-6 div 5) fà -2 perchè -2 è il numero di gruppi"minore" che si può ottenere (-1 è comunque maggiore di -2 e quindi la divisione da come risultato -2 ovviamente) mi pare ...  :-X (meglio che non mi esprima).

Cioè in poche parole per gli informatici (magari non tutti), che sono uomini di azione e vedono il concreto al di là delle teorie filosofiche, il risultati vanno presi in assoluto e poi si applicano i segni (questo detto in parole misere).

P.S.: comunque essere supportati dalle istruzioni di un processore INTEL ... bhè questa la dice tutta  :D :D :D :D :D :D.
10
Generale / Re:Divisione per interi ... una giungla
« Ultimo post da DragoRosso il Maggio 24, 2024, 08:44:01 am »
https://www.omnicalculator.com/it/matematica/modulo

Provate questo calcolatore di modulo.
Prima con 9 mod 5, poi con -9 mod 5.

Col nr. negativo verranno restituiti 2 risultati.
E una breve spiegazione...

Spiegazione corta (ma anche quella più lunga) efficiente e coerente tutto sommato, ma che comunque non si addice ai risultati di Python e company, dove il resto è anche negativo.
L'unica regola che posso comprendere è che il resto matematicamente sia compreso tra ZERO e il valore del divisore (minore o maggiore di quest'ultimo in base al segno  :o .....).

Comunque diatriba senza fine probabilmente, perchè una buona parte dei programmatori (se non tutti) non accetteranno mai che una divisione intera tipo (-9 / 5) o (-6 / 5) dia -2 come risultato, come i matematici non accetteranno mai l'inverso.

Rimango della mia idea, e se mi accorgessi del cambiamento repentino in favore di quest'ultima soluzione (matematica), bhè farei le mie routine in assembler o userei altri metodi per comunque avere i risultati alla "vecchia" maniera.

Ho verificato ora sui mie sorgenti: divisioni e mod su interi ne uso una sbarcata, e una simulazione banale su quello che succederebbe ad applicare il calcolo come fà Python ... bhè disastro totale ... almeno nel mio mondo dell'industria.

Nel panorama industriale la stragrande maggioranza dei calcoli (a parte il machine learing) coinvolge dati "interi", quindi usare la logica del float e degli arrotondamenti "fantasiosi" ( ;) ) non ha molto senso.

Sempre in un mio progetto ho conteggiato le dichiarazioni di variabile DOUBLE e INTEGER (senza contare i nativeint, i cardinal, le word, gli INTxx e gli UINTxx) quante volte comparivano: 87% integer e 13% double.

Ciao
Pagine: [1] 2 3 ... 10

Recenti

How To

Utenti
  • Utenti in totale: 789
  • Latest: iembod
Stats
  • Post in totale: 18855
  • Topic in totale: 2244
  • Online Today: 57
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 23
Total: 23

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.