500 Faq de delphi


Ce versiune de Delphi merită în general folosită pentru fiecare versiune?

În primul rând, puteți afla versiunea exactă a Delphi, dacă este în Ajutor | Apăsați tasta Alt și, fără eliberare, tastați "VERSION".







Delphi 1 ar trebui să fie actualizat la versiunea 1.02 cu patch-uri.

Delphi 2 ar trebui să fie actualizat la versiunea 2.01. Acesta este un proces complet
distribuție. Această versiune poate fi găsită, în special, pe pagină
"Internet" în paleta de componente. Versiunea exactă este 2.0.76.0.

Delphi 3 ar trebui să fie versiunea 3.02. Aceasta este o distribuție completă de 3.01 și
patch-uri până la 3,02.

Delphi 4 trebuie, de asemenea, să fie actualizat cu un al doilea și apoi un al treilea serviciu
Pack'ami, pe care le puteți lua pe site-ul Inprise.

Versiunile Delphi 4.3 și 4.5 sunt versiuni înșelătoare. În
De fapt, acestea sunt premii Delphi 4.0 beta.
Cum pot remedia problemele cu ajutorul ajutorului în timp ce se execută atât Delphi 1 cât și Delphi 2?

În Regedit, ucideți totul de la secțiunea HKLM \ SOFTWARE \ Microsoft \ Windows \ Help,
care este ". \ help".

După modificarea căilor corespunzătoare, importați următorul fișier în registry:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AppPaths \
delphi32.exe] @ = "C: \\ DELPHI2 \\ BIN \\ delphi32.exe" "Path" = "C: \\ DELPHI2 \\ HELP"
Delphi 2 și 3 nu afișează TTF rusesc sub Windows NT WorkStation + ServicePack # 3.

Încercați să faceți
[HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ FontMapper]
DEFAULT = 0xcc (204) în loc de 0x00 (este DEFAULT, nu (implicit) :-)
Mai puțină voință.
Și cum să activați fereastra CPU?

Introduceți cheia de șir

În consecință, pentru Delphi 3 - Delphi 3.0.
Cum se instalează o componentă din Delphi a unei versiuni sub Delphi a unei alte versiuni, dacă există doar un fișier .DCU?

Nici un fel. Firmă Borland a susținut întotdeauna incompatibilitatea
.Fișiere DCU între diferite versiuni. Căutați codul sursă sau .DCU,
compilate pentru versiunea corespunzătoare a Delphi.
Dacă apare o eroare în timpul depanării unui program, aparatul repornește. Ce ar trebui să fac?

REGEDIT4
[HKEY_CURRENT_CONFIG \ Afișați \ Setări]
"BusThrottle" = "pe"

Dacă aceasta nu funcționează, încercați să adăugați în system.ini:

[Display]
"BusThrottle" = "On"
Când rulați programe pe Delphi 1 în Windows 95 în moduri de culoare în iconițe, TBitBtn'ov a găsit artefacte maro ciudate. Cum să scapi de ele?

Umpleți fundalul bitmapului în albastru.
Este posibilă compilarea către Delphi 2/3/4 a unui program care rulează în Windows 3.1?

Nu, dar în distribuția cu Delphi 2/3/4 Delphi 1 este livrat special pentru acest scop.
Unde, în Delphi 3, a funcționat modulul de lucru cu ReportSmith? Și modulele mele preferate de lucru cu OLE: ole2, oleauto și olectl?

Ele sunt în X: \ DELPHI3 \ LIB \ DELPHI2.
Nu utilizați datele de transfer pentru OLE în limba rusă Excel.

De fapt, în VCL comenzile OLE2 sunt transferate în Excel în
Contextul rusesc (nu știu cum să îl numesc corect). pentru
Trebuie să găsiți remedierile din fișierul OLEAUTO.pas din funcție
Linia GetIDsOfNames

dacă Dispatch.GetIDsOfNames (GUID_NULL, @NameRefs, NameCount,
LOCALE_SYSTEM_DEFAULT, DispIDs) <> 0 atunci

și înlocuiți-l cu

dacă Dispatch.GetIDsOfNames (GUID_NULL, @NameRefs, NameCount,
((LANG_ENGLISH + SUBLANG_DEFAULT * 1024) + SORT_DEFAULT * 65536);
DispIDs) <> 0 atunci

După aceea, Excel a început să înțeleagă comenzile normale în limba engleză
:)). Este preluată combinația necesară pentru setarea limbii engleze
C-shnyh anteturi.
Baza de date Desktop afișează conținutul tabelelor cu un font fără litere rusești. Ce ar trebui să fac?

Pentru DBD 5.0, în fișierul c: \ windows \ pdoxwin.ini, introduceți în secțiune

[Proprietăți]
SystemFont = Arial Cyr

Pentru DBD 7.0, trebuie să reparați registry-ul: cheia

Lăsați umbrele să vă treacă prin: // sfințenia recesivă
Nu este posibilă deschiderea unei tabele create în InterBase cu DEFINIȚIE CHARACTER SET WIN1251. Se spune că "WIN1251 este nedefinit".

Puneți Interbase în directorul cu calea corespunzătoare convențiilor de numire DOS pe nume (8 + 3).
WindowsNT 4.0 + Delphi 2.01 C / S + Oracle Client 7.3 + Oracle Server 7.3. După autentificare, "EExternalError 0xC0000008" apare în baza de date. Ce ar trebui să fac?

Demolați serviciile Oracle Trace Collection.
Cum se rusifiază mesajele de program?

Utilizați acest tabel:
* VER80 - Delphi 1
* VER90 - Delphi 2
* VER93 - C ++ Builder 1
* VER100 - Delphi 3
* VER110 - C ++ Builder 3
* VER120 - Delphi 4
Cum pot face programul să ruleze într-o singură instanță?

Utilizați funcția ActivatePrevInstance din biblioteca rxLib. Pentru a finaliza cea de-a doua instanță, utilizați Application.Terminate.

O altă opțiune: X: \ DELPHI2 \ DEMOS \ IPCDEMOS \ ipcthrd.pas, funcția IsMonitorRunning ().
Cum pot afișa o fereastră cu o imagine în timp ce se încarcă programul?

Vedeți exemplul din X: \ DELPHI \ DEMOS \ DB \ MASTAPP \ mastapp.dpr.

Este convenabil să utilizați funcția ShowSplashWindow din rxLib.
Și cum aș pune pictograma pe bara de activități, unde este ceasul și comutatorul tastaturii? (Această problemă a primit primul premiu).

În biblioteca rxLib, există o componentă TrxTrayIcon. Rețineți că pentru
Va trebui să închideți sistemul de operare corect.
procesează mesajul WM_QUERYENDSESSION.






Cum se face culoarea fără probleme a titlului ferestrei, ca în MSOffice'95?

În rxLib există un TGradientCaption.
Cum pot transcodifica liniile de la codarea Win-cod la Dos-encoding și invers?

CharToOEM, OEMToChar, CharToOEMBuff, OEMToCharBuff. nota
Cu toate acestea, aceste funcții nu sunt capabile să facă astfel de lucruri, de exemplu
koi8-r în DOS și așa mai departe.
Cum să capturați evenimentele de creare sau ștergere a fișierelor de către alte programe?

În rxLib există TrxFolderMonitor.
(Win16) FileCDR, dar este slab documentat.
Cum afișez dialogul de selecție a catalogului?

SelectDirectory, rxLib: TDirectoryEdit.
Programul meu de mult timp face niște lucruri utile, cum ar fi citirea arborelui de directoare sau calculele abundente, iar în acel moment celelalte programe aproape că nu funcționează. Cum să le permiteți acestora să facă acest lucru?

Dacă doriți să dați termenii în șiruri de caractere, utilizați Sleep (0); acest lucru va da restul partii sistemului.

(Win16) Dacă doriți să permiteți ca mesajele să fie procesate de alții
programe, dar nu ale tale, atunci este mai bine să folosești Randamentul ().
Cum pornesc un program? Cum pot să aștept să funcționeze acest program? Cum să aflăm dacă programul se execută sau a fost deja finalizat? Cum pot închide definitiv un program executabil?

WinExec () sau ShellExecute. Al doilea are mai multe posibilități.

CreateProcess () în parametrul info returnează mânerul
proces de rulare. Deci, faci WaitForSingleObject (pi.hProcess,
INFINITE);

(Win16) Întârzierea poate fi luată de la rxLib.

mâner: = WinExec (.);
dacă mânerul = = 32 atunci
în timp ce GetModuleUsage (mâner)> 0 face
Întârziere (nn);
altfel
ridica.

Pentru a afla dacă programul funcționează, utilizați
GetProcessTimes (), parametrul lpExitTime.

(Win32) Pentru a forța procesul să se termine - TerminateProcess.

(Win16) (RR): Trebuie să trimiteți un mesaj programului WM_QUIT:

Manipulați evenimentul OnClose pentru formular și fixați-l acolo
parametrul Action în caFree. Faptul este că valoarea implicită
pentru MDI Forme de copii caMinimize. Apropo, dacă faci acțiune: = caNone,
atunci formularul nu poate fi închis.
Trebuie să adaug multe linii în TListbox sau în TCombobox sau în TMemo sau în TRichEdit, în timp ce obiectul în sine este în mod constant intermitent redraw. Cum să scapi de asta?

BeginUpdate / EndUpdate.
Cum pot programa o formă non-dreptunghiulară, de exemplu, ca Norton CrashGuard, sub forma unui scut?

SetWindowRgn () (Win32).
Cum să folosiți cursorii în program?

const
crZoomIn = 1;
crZoomOut = 2;

Ecran. Cursuri [crZoomIn]: = LoadCursor (hInstance, 'CURSOR_ZOOMIN');
Ecran. Cursuri [crZoomOut]: = LoadCursor (hInstance, 'CURSOR_ZOOMOUT');

Programul dvs. ar trebui să fie conectat cu un fișier de resurse care conține
cursoarele corespunzătoare.
Cum pot limita mișcarea cursorului mouse-ului în orice zonă a ecranului?

ClipCursor (). Rețineți că utilizarea acestei funcții este un ton rău.
Cum se poate schimba aspectul tastaturii din program?

ActivateKeyboardLayout (). Rețineți că utilizarea acestei funcții este un ton rău.
Cum pot face formularul să nu se închidă doar pe Alt-F4, dar să emită o cerere de salvare?

Procesul OnCloseQuery.
Cum se obține o cale scurtă de fișiere dacă este lungă? ("c: \ Fișiere de program" ==> "c: \ progra

GetShortPathName ()
Cum se scrie un serviciu pentru Windows NT?

TRegistry
Cum să împing ușa CD-ROM-ului?

mciSendString ('Set cdaudio Door Open Wait', 0, mâner);

De asemenea, mciSendCommand (mp.DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
Cum să interceptați tastele apăsate în fereastra altui program? Și oricum, orice evenimente care vin în alte programe?

SetWindowsHookEx ().
Cum se poate apela un DLL pe 16 biți dintr-un program pe 32 de biți?

RTFM ambalate, $ A.
Unde pot obține o documentație detaliată despre lucrul cu RTF, TRichEdit?

În MSDN.
În rxLib 2.60 a existat o componentă TrxRichEdit care suportă pe deplin MS RichEdit 2.0 și versiunea sa DB-aware. Recomandat.
Cum pot glisa un formular nu numai pentru titlu?

WM_NCHITTEST.
Cum să urmăriți "scăparea" cursorului mouse-ului din componentă?

Procesați CM_MOUSEENTER / CM_MOUSELEAVE.
Cum să adăugați elemente în meniul de sistem al ferestrei?

Puteți obține mânerul meniului sistem al ferestrei utilizând funcția GetSystemMenu ().
Este posibil să vă asigurați că există un sunet în fișierul .wav din fișierul executabil al programului și cum ar putea fi redat acest sunet?


În fișierul MyWave.rc scrieți:

MyWave RCDATA LOADONCALL MyWave.wav

brcc32.exe MyWave.rc, veți primi MyWave.res.

În programul dvs., scrieți:

Atenționați-vă următoarea întrebare: "Cum să citiți un fișier de unde
fișierul executabil? "

procedura RetrieveMyWave;
var
hResource: Thandle;
pData: Pointer;
începe
hResource: = LoadResource (hInstance, FindResource (hInstance, 'MyWave', RT_RCDA
AT));
încerca
pData: = LockResource (hResource);

dacă pData = nul atunci
ridicați Exception.Create ("Nu se poate citi MyWave");

// Aici pData indică spre MyWave
// Acum puteți, de exemplu, să îl jucați (Win32):
PlaySound (pData, 0, SND_MEMORY);
în cele din urmă
FreeResource (hResource);
se încheie;
se încheie;
Cum pot afla și modifica rezoluția ecranului?

procedura ChangeDisplayResolution (x, y.);
var
dm. TDEVMODE;
începe
ZeroMemory (@dm, sizeof (TDEVMODE));
dm.dmSize: = dimensiunea (TDEVMODE);
dm.dmPelsWidth: = x;
dm.dmPelsHeight: = y;
dm.dmFields: = DM_PELSWIDTH sau DM_PELSHEIGHT;
SchimbareDisplaySettings (dm, 0);
se încheie;
Cum pot crea o așa-numită "matrice de const" la timpul de execuție, de exemplu, parametrii pentru funcția Format ()?

Citiți orice carte despre programare în Win32. Pe scurt - uitați de toate aceste prostii.
Am creat un obiect TStrings, dar am o eroare când încerc să îl accesez. Care este problema?

TStrings este o clasă abstractă. Aveți nevoie de un TStringList.
Cum să lucrați cu formate grafice, cel puțin cele mai celebre?

Pe un compact cu Delphi 3 din directorul EXTRAS există o bibliotecă JPEG. În cazul în care
spuneți în modulul de utilizare jpeg; puteți lucra cu .jpg ca și cu TPicture.

Luați în considerare existența ecoului RU.DIRECTX.
Cum se utilizează OpenGL în programul tău?

În Delphi 4 există un exemplu de browser web pe Delphi.

MS Internet Explorer poate fi un control ActiveX care vă permite să-l plasați pe un formular.

vg.
Aici se află biblioteca vgLib, care conține multe lucruri utile.
Ce instrumente pot fi utilizate pentru a dezvolta în mod colectiv un proiect?

Microsoft Visual Source Safe. Pierde în funcționalitate, poate
câștiga în "obicei".
Cum pot detecta scurgeri de memorie și de resurse în program?

În rxLib există o componentă TrxMathParser, suficient de puternică pentru un număr mare de aplicații.
Cum de a reduce dimensiunea executabilului programului?

Scrieți la WinAPI fără a utiliza VCL. Acest lucru este potrivit pentru un deja
programe mici.

Utilizați pachetele de la Delphi 3. Efectul va apărea,
când există mai multe fișiere executabile.

Utilizați compresoarele fișierelor executabile, de exemplu:
UPX, Aspack, PECompact, PECrypt - căutați noile lor versiuni pe Internet.
În cazul în care pentru a obține tot felul de icoane, imagini pentru butoane, etc pentru programul tău?

Să începem cu creația.

Esența proprietății proprietarului este că proprietarul distruge
(prin intermediul unor obiecte gratuite) care îi aparțin. Astfel, totul depinde de
celui căruia doriți să îi încredințați distrugerea formelor / componentelor create.
În special, dacă faceți asta singur, atunci AOwner poate
fi, de exemplu, zero.

Pentru ca componenta creată să apară pe ecran, este necesar să specificați
părintele său prin completarea proprietății părinte, de exemplu, NewButton.Parent: =
Form1;

Un exemplu de cod care gestionează evenimentele din componente proaspăt create:







Articole similare

Trimiteți-le prietenilor: