1. Si vous souhaitez que votre programme gère correctement les exceptions, veuillez citer l'unité SysUtils.pas, sinon même si le programme utilise try. . . sauf. . . Les exceptions ne sont pas non plus détectées correctement. 2. Un moyen de définir une chaîne de ressources constante aa='aaaa';raise Exception.CreateRes(@aa); 3. Initialisation du tableau de constantes de chaîne const constarray:array [0..2] of string=('first ', 'deuxième', 'troisième');4. Type d'initialisation de la structure Tstructinit=enregistrement A1:entier A2:tableau [0..2] de integer;End;Const m_structinit:Tstructinit=(A1:0;A2:(0,1,2));5. La longueur du tableau multidimensionnel var array2:array of array of integer;setlength(array2,2,2) ;6 . L'espace ouvert à l'aide de Create et New existe dans le tas et ne peut pas être automatiquement libéré. Il est recommandé d'utiliser FreeAndNil pour libérer. Les paramètres et les variables locales existent dans la pile et sont automatiquement libérés. 7. SizeOf ne convient pas aux objets et renvoie toujours 4 ; il peut être renvoyé correctement pour les types fixes 8. Create(nil) doit être libéré manuellement et Create(self) sera publié au fur et à mesure que le propriétaire le publiera. les changements ont été Définir la valeur de la constante PRocedure ChangeConst(const Const;var Value;Size:Integer);begin Move((@Value)^,(@Constant)^,Size);End;10. L'utilisation de DownTo dans une boucle lors de l'exécution d'une opération de suppression évitera les erreurs. 11. Le code Ascii des caractères chinois est >128, qui peut être utilisé pour déterminer s'il s'agit d'un caractère chinois. 12. Lors de l'écriture d'une DLL, vous devez utiliser. l'unité Sharemem pour référencer la gestion de la mémoire BORLANDMM.DLL 13. PostMessage place uniquement le message dans la file d'attente des messages et doit être mis en file d'attente pour le traitement. SendMessage contourne la file d'attente des messages et est envoyé directement à la procédure de fenêtre, et ne revient que lorsque le traitement du message renvoie la valeur 14. Mouvement de la souris dans les messages : CM_MOUSEENTER, CM_MOUSELEAVE15 Message d'arrêt WM_QUERYENDsession16. ActivateHint pour créer un formulaire flottant.17. Appeler la boîte de dialogue des propriétés du fichier utilise ShellAPI ; la fonction ShowFileProperties(FileName : String ; Wnd : lpVerbe := PAnsiChar('propriétés'); lpIDList := nil; lpDirectory := nShow := 0; hInstApp := nil; 0 ; lpClass := fin nulle ; Résultat := ShellExecuteEX (@sfi);end;procedure TForm1.Button1Click(Sender: TObject);begin ShowFileProperties('c:/AA.txt', Handle);end;18. La modification de l'heure du système utilise Windows,Dialogs,Forms;var MyTime. : TsystemTime;begin FillChar(MyTime,sizeof(MyTime),#0); MyTime.wYear:=2003; MyTime.wMonth:=06; MyTime.wDay:=01; If not SetSystem(MyTime) thenShowmessage('Failure'); 19. Copiez la procédure Xcopy(SourceDir,DestinationDir: Chaîne);
var
Recherche : TSearchRec ;
Rec : Mot ;
Commencer
RépSource := RépSource + '/';
Rec := FindFirst (SourceDir + '*.*', faAnyFile, Search);
Tandis que Rec = 0 Do
Commencer
Si Search.Name[1] <> '.'
Commencer
Si (Search.Attr et faDirectory) = faDirectory Alors
Commencer
Windows.CreateDirectory(PChar(DestinationDir + '/' + Search.Name), nul);
FileSetAttr (DestinationDir + '/' + Search.Name, FileGetAttr (SourceDir + '/' + Search.Name));
X_Copy (SourceDir + '/' + Search.Name, DestinationDir + '/' + Search.Name);
fin
Autre
Commencer
CopyFile(PChar(SourceDir + '/' + Search.Name),PChar(DestinationDir + '/' + Search.Name), True);
FileSetAttr (DestinationDir + '/' + Search.Name, FileGetAttr (SourceDir + '/' + Search.Name));
application.ProcessMessages ;
fin;
fin;
Rec := FindNext(Recherche);
fin;
RechercherFermer(Rechercher);
fin;20. Dessiner une procédure bitmap transparente DrawTrans(DestCanvas: TCanvas; ; ORBitmap:= NIL; essayez ANDBitmap:= TBitmap.Create; ORBitmap:= TBitmap.Create; Src := Bounds(0,0, SrcBitmap.Width, SrcBitmap.Height); avec ORBitmap, commencez Largeur:= SrcBitmap.Width; .Color := clNoir; Canvas.CopyMode := cmSrcCopy; Canvas.BrushCopy(Src, SrcBitmap, Src, AColor); fin avec ANDBitmap commencer Largeur:= SrcBitmap.Width; Hauteur:= SrcBitmap.Height; Canvas.Brush.Color := BackColor; ; Canvas.BrushCopy(Src, SrcBitmap, Src, AColor); fin avec DestCanvas commencer CM := CopyMode := cmSrcAnd; Draw(X,Y, ANDBitmap := cmSrcPaint; ANDBitmap.Free; ORBitmap.Free; fin;fin;procédure TForm1.Button4Click(Expéditeur : TObject);begin DrawTrans(Image1.Canvas, 0,0, Image2.Picture.Bitmap, clBlack, clSilver);end;21. Obtenir la fonction de vitesse du processeur GetCpuSpeed: Extended;var t, mhi, mlo, nhi, nlo: dword; shr32 : comp;début shr32 := 65536; 65536; t := GetTickCount; while t = GetTickCount do ; asm DB 0FH,031H // rdtsc mov mlo,eax end; while GetTickCount < (t + 1000) do ; nhi,edx mov nlo,eax fin Résultat := ((nhi * shr32 + nlo) - (mhi * shr32 + mlo)) / 1E6;end;procedure TForm1.Button4Click(Sender: TObject);begin label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz';end temporairement; Je viens d'écrire tellement de choses, et je mettrai progressivement à jour et en ajouterai davantage à l'avenir.