Newsgroup: it.comp.lang.delphi
Titolo: Proposta di FAQ

Se ne e' sempre parlato tanto, io qualcosa ho raccolto...
ditemi che ne pensate :)
segue faq
La FAQ di IT.COMP.LANG.DELPHI
raccolta da Nicola {MSX} Lugato
-DOMANDA:
Object Pascal ? Io conoscevo il Turbo/Borland pascal... C'è qualcosa in
comune ? Sono avvantaggiato ?
-RISPOSTA
C'è qualcosa in comune. Si sei avvantaggiato, ma non molto. Object Pascal è
una versione ampliata del Pascal "standard" che tra l'altro implementa le
classi (*), come in C++. Quindi sai già usare buona parte del linguaggio, ma
le novità di Object Pascal sono molte e importanti.
*: si anche pascal normale implementava le classi (la parola chiave era
Object) ma facevano molta piu' pena.. niente a che vedere con l'Object
pascal :)
-DOMANDA:
Cos'è la VCL ?
-RISPOSTA:
Per creare la tua applicazione, Delphi ti mette a disposizione la VCL
(Visual Component Library), ovvero una raccolta di componenti e controlli
che puoi vedere raccolti nella "barra" in alto. Fai doppioclick su un
componente e vedrai che comparirà nella form, cioè la finestra che vedi
piena di puntini. Ogni componente ha diverse poprietà, che puoi leggere e
modificare tramite l'Object Inspector dopo averne selezionato uno. Esistono
componenti visuali (chiamati controlli) che saranno visibili a runtime
(quando il tuo programma sarà in funzione) e altri non visuali, che
racchiudono altre funzioni. Lo scopo di questa raccolta, è di offrire agli
sviluppatori degli oggetti che racchiudano ciascuno delle funzioni proprie
di un certo argomento. Ad esempio esiste il componente OpenDialog, (che
gestisce le finestre di dialogo per aprire un file), il componente Edit (per
avere una casella di testo nella form), Image (per le immagini) ecc. ecc.
Inoltre è possibile creare componenti nuovi o scaricarne dalla Rete.
-DOMANDA:
Delphi mi genera un sacco di file con estensioni strane quando salvo un
progretto. Servono tutti ?
-RISPOSTA: (Riccardo Kalb)
i file con la tilde ~ sono file di backup dei relativi file se vuoi puoi
anche cancellarli se non ti servono.
i file cfg e dof non devi mai cancellarli perchè sono impostazioni del
progetto. I dcu anche se li cancelli non succede niente perchè vengono
rigenerati nella compilazione, ma solo se hai i rispettivi file pas
(naturalmente i pas non vanno cancellati)
-DOMANDA:
Come nascondo un processo dalla task list (quella di CTRL-ALT-CANC) ?
-RISPOSTA:
usa questa procedura residente nella DLL Kernel32.dll
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'KERNEL32.DLL';
poi chiama:
RegisterServiceProcess(GetCurrentProcessID, x);
Metti come x 1 se vuoi nasconderla o 0 per ripristinarla.
-DOMANDA:
Come apro un indirizzo internet con Delphi ?
-RISPOSTA:
Usa ShellExecute:
ShellExecute (handle, nil, '
http://www.indirizzo.com
' ,nil,nil,sw_show);
Per le e-mail:
ShellExecute (handle, nil,'mailto:
cic...@server.com
', nil,nil,sw_show);
La funzione ShellExecute si trova nella unit ShellApi che dovresti inserire
nella tua USES list.
-DOMANDA:
Perchè Delphi è meglio di VB ?
-RISPOSTA: (A. Salvati)
1) Vb non è a oggetti. La programmazione a oggetti si basa sui 3 cardini
Polimorfismo-incapsulamento-ereditarieta'. Orta, non avendo vb
l'ereditarieta' non è OOP.
2) In un form vb non puoi mettere + di 253 controlli senza utilizzare gli
array di controlli. Usare gli array di controlli significa incasinare tutta
la gestione degli eventi.
3)Le funzioni di gestione delle stringhe risalgono al QuickBasic 4.5 che
utilizzavo io nel lontano 1991.
4) Vb non ha una gestione dei puntatori avanzata come quella di delphi
5) Gli exe generati da Vb non sono altro che dei P-Code. In pratica, ci
vogliono dei moduli di runtime per far funzionare un qualsiasi programma.
Cio' significa che per una applicazione da quattro soldi che fa la cosa
piu'scema del mondo ti porti dietro circa 4 Mb di librerie DLL
6) Fai un confronto tra l'editor di menu di vb e quello di d4
7) Nei menu di vb per mettere le immagini devi fare un sacco di giri
viziosi. In delphi la cosa è gia' prevista.
8) La velcoita di esecuzione di una app. delphi ee molto superiore a quella
di una applicazione simile scritta in vb.
9) L'ide di vb si inchioda. Ci ho lavorato per un anno e mi e' successo di
tutto. Ricordo una operazione di copia e incolla ripetuta per 14 volte: ongi
volta falliva, dandomi un GPF SEMPRE NELLO STESSO INDIRIZZO ESADECIMALE.
Alla fine ho rinunciato.
10) Un articolo preso da Visual basic Programmers Journal, che tratta solo
di vb, denigrava vb dicendo varie cose tra cui: mancanza di documentazione
cartacea, continuo inserimento di "fronzoli" senza mai potenziare il nucelo
del compilatore
11) Uno dei piu autorevoli esperti di programmazione in vb che ha scritto
vai manuali ha messo su internet un suo articolo dal titolo "Saying goodbye
to vb.."
12) Access non funziona.
13) In vb: hai un oggetto Data, chiamato pippo, e lo associ come datasource
a 100 controlli. Se cambi il nome del datasource ti tocca di anare su tutti
i controlli per cambiare la proprieta in base al nuovo nome del datasource.
14) Con delphi hai i sorgenti dei vcl e non e cosa da poco
15) Dicono che con vb puoi creare gli ocx: e' una balla! Gli ocx creati in
vb danno un sacco di problemi
16) Ide troppo pesante
17) Vb non prevede l'architettura CORBA
18) La dbgrid standard di vb non permette di inserire colonne che prendono
dati da tabelle diverse da quella impostata come datasource.
Ti basta, per ora?
-DOMANDA:
Esiste l'overloading degli operatori ?
-RISPOSTA:
No, almeno fino a Delphi5
-DOMANDA:
Esiste l'overloading delle funzioni ?
-RISPOSTA:
Eseste a partire da Delphi4. Per implementarli, aggiungi la direttiva
overload
sulla dichiarazione delle procedure.
-DOMANDA:
Come creo dinamicamente un controllo ?
-RISPOSTA:
procedure TForm1.NuovoBottone;
var Button:TButton;
begin
Button := TButton.Create(Form1);
Button.Name := 'Premimi !';
Button.Left := 100;
Button.Top := 100;
Button.Parent := Form1;
end;
-DOMANDA:
Mi servirebbe sapere come poter accendere e spegnere i tre led della
tastiera, se qulcuno potrebbe darmi una mano, ne sarei riconoscente.
-RISPOSTA: (Andrea Magni)
Ecco qua, il tutto si basa su Get/SetKeyBoardState che riempie una struttura
(un array 0..255 di bytes) con lo stato attuale dei tasti...
var Tastiera:Tkeyboardstate;
begin
GetKeyBoardState(Tastiera);
  Tastiera[VK_CAPITAL] := 1;
  Tastiera[VK_NUMLOCK] := 1;
  Tastiera[VK_SCROLL] := 1;
SetKeyBoardState(Tastiera);
ShowMessage('Adesso li spengo');
GetKeyBoardState(Tastiera);
  Tastiera[VK_CAPITAL] := 0;
  Tastiera[VK_NUMLOCK] := 0;
  Tastiera[VK_SCROLL] := 0;
SetKeyBoardState(Tastiera);
-DOMANDA:
Come faccio a sapere se sono connesso a Internet ?
-RISPOSTA: (Carlo Bertuccini)
Devi utilizzare le API RAS (Servizi di accesso remoto). Trovi molti esempi
sulla DSP. Addirittura ci dovrebbe essere un componente [NON chiedermi il
nome poichè ne scarico talmente tanti...] che ha tra le sue funzioni
qualcosa tipo Connected.  L'URL della DSP è :
http://delphi.icm.edu.pl/index.htm
-DOMANDA:
Come accedo velocemente ai singoli pixel di un TBitmap ?
-RISPOSTA:
Devi usare le ScanLine, che ritornano un puntatore al primo byte della
riga che gli passi. Attento che la grandezza dei pixel dipende dalla
profondità di colore.
-DOMANDA:
Ho bisogno di intercettare un evento di un tasto fuori dalla form, ad
esempio il tasto start della barra di avvio.
-RISPOSTA: (Antonio Tarolla)
Per far quello che chiedi devi intercettare l' handle del pulsante e tramite
GetMessage conoscere il numero che identifica il messaggio.
I messaggi non sono stringhe, ma costanti numeriche.
Non conosco funzioni che associano un messaggio stringa ad un numero e
viceversa, quindi puoi realizzare tu una funzione simile.....non dovrebbe
essere più
difficile di tanto !!
Ah.......per conoscere l' handle del pulsante START o AVVIO, devi conoscere
prima l' handle della finestra che ha come classe "Shell_TrayWnd", poi
tramite
l' API FindWindowEx risalire all' handle del pulsante considerando che
appartiene alla classe "Button".
-Domnanda:
Come faccio a spegnere il computer da una mia app (shutdown) ?
-RISPOSTA:
Devi usare ExitWindowsEx.
-DOMANDA:
Come levo il fastidiosissimo beep che fa il TEdit quando premo invio ?
-RISPOSTA:
Su OnKeyDown metti:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = VK_RETURN then key:=0;
end;
Ed ora qualche Haiku sul delphi :)
Borland innovates.
Delphi lives where Microsoft
fears to port their code.
 Tim Sommers
drag. drop. TButton.
the form is where it happens.
now, assign OnClick.
 Tim Sommers
Windows sucks out loud
Use Kylix to port your code
Linux treats you right
 Tim Sommers
I am the source code.
compiler reduces me
to ones and zeroes.
 Tim Sommers
I sit and I think
Delphi for Linux, Awesome!
I anxiously wait.
 Micheal Bonner
Haiku Error Messages (Richard Morris)
invalid pointer
I am sure you tried to free
that pointer before
Eek, Invalid cast!
You tried to shove a square peg
into a round hole
Hey, Stack overflow
Now you have PUSHed me to far
Can't take this abuse
That is all messed up
Semicolon before Else
not in this language
$WEAKPACKAGEUNIT
or $DENYPACKAGEUNIT
one or the other
no semicolon
have you recently escaped
Visual Basic ?

 end;
Manca tutte le domande sui DB che non ho mai letto, e la Domanda (con la D
maiuscola) su ShellExecute
Se qualcuno vuole aiutare :)

{MSX} ,
Anzitutto, grazie per aver cominciato :-).
Suggerirei di adottare una divisione in capitoli sin dall'inizio: es:
1) Indice & frontespizio
  1.0) Forewords & rif. al manifesto
  1.1) Versione
  1.2) Indice
  1.3) Credits
2) Generalita'
  2.1) Storia
  2.2) VB Vs Delphi
  2.3) Links /* fondamentale */
* eventualmente 3 & 4 unico capitolo VCL (o VCL/CLX) *
3) Componenti visuali
  3.1) Creazione / ownership
  3.2) QuikRep
  3.3) Griglie
4) Componenti non visuali
5) WinApi
  5.1) Processi & Task
  5.2) Ras & connessioni
6) Programmazione DB
7) Linux & Kylix
8) Interbase (anche sotto 6)
* Appendici *
A) Poesia
B) Prosa
Saluti
Paolo Arosio

 B) Prosa
Eheeh in effetti sono un po' inutili, ma potevo privare i piu' degli haiku
sul delphi ? :)
ciao e grazie del sostegno :)

Delphi Super Page (ho perso ancora una volta il link)
Eccolo: 
http://delphi.icm.edu.pl/
Molto interessanti le faq che state preparando, credo che me le
studiero' a fondo! :)
-- 
Claudio "Elder" Bertoli

raccolta da Nicola {MSX} Lugato
ho dato una letta e mi sembrano OK, ovviamente ne mancano ma metterle
tutte è impossibile...
penso che non sarebbe male iniziare fin d'ora con una catalogazione
come suggerisce Paolo Arosio, per ora sono poche, ma con il tempo
poi rischiamo di renderle illeggibili
direi di eleggerti postatore/mantenitore ufficiale di FAQ (qui e su
it.faq) !! :-))
magari pubbliacarle anche su qualche sito/siti...
Ciao,
Alan Solo

  3.3) Griglie
aggiungerei componenti DataAware (visuali e non)
Ciao,
Alan Solo

 magari pubbliacarle anche su qualche sito/siti...
Argh come temevo :))
Ok dai cerchero' di fare del mio meglio, ma avverto subito che il tempo
scarseggia..
Comunque se ve ne vengono in mente, mandatemi pure nuove domande+risposte,
soprattutto sui database :)
Prima ho messo qualche url anche.
ciao !

postarli.
qui ci sono alcuni articoli (per la sezione generale direi), un po'
datati pero' secondo me interessanti:
Real Programmers Use Pascal (Kylix)
http://www.oreilly.com/news/kylix_0800.html
Delphi in a Nutshell - The Delphi Object Model
(spiega il modello ad oggetti di Delphi confrontandolo con VB, Java e
C++)
http://www.oreilly.com/catalog/delphi/chapter/ch02.html
-link utilità varie:
http://www.tamaracka.com/search.htm
per cercare nei newsgroup di Borland
al momento non mi vengono altri tranne torry e DSP...
-per la sezione InterBase (anche se sarebbe OT,pero'...)
www.ibphoenix.com
http://firebird.sourceforge.net/
(aprofitto per segnalare ai grafici in ascolto che si cerca di fare un
nuovo logo di FireBird.. fatevi sentire ;)
www.borland.com/interbase
www.interbase2000.org
Ciao,
Alan Solo

 Come nascondo un processo dalla task list (quella di CTRL-ALT-CANC) ?
la domanda è sbagliata e la risposta anche
la domanda non andrebbe fatta (è da lamer)
la risposta è "non si fa"
-oppure-
la domanda dovrebbe essere "Come creo un servizio in Windows 98?"
la risposta sarebbe corretta

 significa incasinare tutta la gestione degli eventi.
2bis) Avere più di 253 controlli su una form è un errore dello 
sviluppatore. Punto.
5) Gli exe generati da Vb non sono altro che dei P-Code
questa è una cazzata offensiva che chiedo venga rimossa

questa è una cazzata offensiva che chiedo venga rimossa
A quanto ricordo, mi pare che sia vero, il VB genera dei P-Code..
Certo non e' bello :) Se qualcuno se ne intende parecchio di VB magari ci
chiarisca
ciao !

 questa è una cazzata offensiva che chiedo venga rimossa
Col 
vb.net
 sarà sempre più vero :-)))

 chiarisca
<omissis>
Se ben ricordo, son quasi 2 anni che lavoro con Delphi (senza rinnegare il
passato), da VB 5 è possibile sia generare "eseguibili" (mi si passi il
termine) in P-Code sia eseguibili veri e propri. In entrambi i casi è
necessaria la "mitica" dll VBRUNxyz. Nel primo caso la dll si comporta da
runtime (o , termine alquanto abusato, da Virtual-Machine) per il P-Code.
Nel secondo caso è una dll che incapsula tutte le API di win che altrimenti
VB non saprebbe come usare. Quindi VB genera un eseguibile a tutti gli
effetti, ma non un eseguibile "monolitico" come permette Delphi. Avrai
sempre bisogno di almeno una dll, la (mi ripeto) "mitica" VBRUNxyz (che tra
l'altro cambia da versione a versione di VB).
Bye Bye Honest

 magari pubbliacarle anche su qualche sito/siti...
beh, sicuramente potremo chiedere ai gestori di Ded (Cantu', namely) se ce
le puo' ospitare. Anche a programmazione(dot)it, nella pagina su Delphi.
Saluti
Paolo Arosio

   2.3) Links /* fondamentale */
Si questa e' fondamentale. Anzi, faccio un appello: chiunque conosca link
a risorse sul Delphi, in inglese e meglio ancora in italiano e' pregato di
postarli.
<<
Sicuramente tutti quelli che hai detto. Aggiungerei i seguenti:
(Alcuni potrebbero essere da verificare)
Saluti
Paolo Arosio
-- Ufficiali:
 
http://community.borland.com/delphi
 
http://www.borland.it/
-- Notizie, articoli, tips, ...
 
http://www.dedonline.com
           [IT]
 
http://www.programmazione.it
       [IT]
 
http://www.delphi3000.com
 
http://www.marcocantu.com
 
http://www.drbob42.com
 
http://www.delphioop.com
-- Ricerche
 
http://www.tamaracka.com/search.htm
    (ng)
 
http://www.google.com
                  (generale)
-- Componenti / Librerie / Tools (FW / OS / SW / $$):
JEDI: 
http://www.delphi-jedi.org
RxLib: 
http://www.rxlib.com
ICS:
Indy:
FreeVCS: 
http://www.thensle.de
DSP: 
http://delphi.icm.edu.pl/
Torry: 
http://torry.rimini.com/
     (mirror)
TurboPower: 
http://www.turbopower.com
ReportBuilder:
-- [OT] Usenet / netiquette / newsserver / newsreaders
???

Ti basta, per ora?
Oltre a non ritenere questo modo di rispondere il piu' corretto per un
documento di FAQ, suggerisco di eliminare del tutto questa domanda.
Nessun linguaggio e' migliore degli altri.
--
Walkie...@Libero.It (ICQ# 8143647)

la domanda non andrebbe fatta (è da lamer)
ci sono anche quelli, pero' direi che il 90% dei casi e' fatta da
newbies i quali probabilmente non sanno nemmeno cosa sono i servizi, e
spiegano cosa vorrebbeo ottenere... tieni presente che le FAQ
(frequently asked question) devono essere utili soprattutto ai newbie,
quindi nessuno cercherò mai "servizio" ma forse "nascondere task" o
"ctrl lalt canc"...
Ciao,
Alan Solo



hehe, lo penso anch'io... ma hai visto chi l'ha scritta no?
uno che come firma metteva "Microsoft non funziona" ;)
č chiaramente di parte, anche se una citazione a VB ci dovrebbe
essere, visto che molti emigrano da li' e che č citato anche nel
manifesto del ng... magari non come "Perchč delphi migliore"
ma "che differenze ci sono"
Ciao,
Alan Solo

Nessun linguaggio e' migliore degli altri.
non conosci il VB. Non è un brutto linguaggio, è proprio INCOMPLETO

cambia da versione a versione di VB).
msvbvmXX.dll
dalla versione 5 in poi ha cambiato nome

Col 
vb.net
 sarà sempre più vero :-)))
capirai, dire .NET è come dire Java. DEVE essere così, è una
caratteristica dell'architettura. I compilatori semplicemente non
producono assembler Intel, PowerPC, Alpha o quello che è, ma
Assembler.NET, che guardacaso è, a dirla con un eufemismo, intuitivo

 capirai, dire .NET è come dire Java. DEVE essere così, è una
d'altra parte, dire che il compilatore del VB e' come quello di Delphi...


Delphi... 
no, il compilatore VB *č* quello di Visual C++. Non simile, proprio lo 
stesso

 stesso
In .NET direi di si, in VS6.0 sono abbastanza separati. VB6.EXE non crea le
stesse cose di DELPHI32.EXE

In .NET direi di si, in VS6.0 sono abbastanza separati.
fai una cosa: sostituisci c2.exe (il compilatore di VB) con c1.exe (il 
compilatore di VC++) e viceversa, e dimmi come ti va

non conosci il VB. Non è un brutto linguaggio, è proprio INCOMPLETO
Ma conosco la netiquette.
E so che domande del genere generano flame, per cui non ci dovrebbero
essere.  Punto e basta.
Poi fate come volete.
--
Walkie...@Libero.It (ICQ# 8143647)