1. Si desea que su programa maneje las excepciones correctamente, cite la unidad SysUtils.pas; de lo contrario, incluso si el programa usa try. . . excepto. . . Las excepciones tampoco se detectan correctamente. 2. Una forma de definir una cadena constante Resourcestring aa='aaaa';raise Exception.CreateRes(@aa); 3. Inicialización de la matriz constante de cadena const constarray:array [0..2] of string=('first ', 'segundo', 'tercero'); 4. Tipo de inicialización de estructura Tstructinit=record A1:integer A2:array [0..2] de integer;End;Const m_structinit:Tstructinit=(A1:0;A2:(0,1,2));5. La longitud de la matriz multidimensional var array2:matriz de matriz de entero;setlength(array2,2,2) ;6. El espacio abierto usando Crear y Nuevo existe en el montón y no se puede liberar automáticamente. Se recomienda usar FreeAndNil para liberar. Los parámetros y las variables locales existen en la pila y se liberan automáticamente. 7. SizeOf no es adecuado para objetos y siempre devuelve 4; se puede devolver correctamente para tipos fijos. 8. Create(nil) debe publicarse manualmente y Create(self) se publicará cuando el propietario lo haga. los cambios han sido Definir el valor de la constante PRocedure ChangeConst(const Const;var Value;Size:Integer);begin Move((@Value)^,(@Constant)^,Size);End;10. El uso de DownTo en un bucle al realizar una operación de eliminación evitará errores 11. El código Ascii de caracteres chinos es> 128, que se puede usar para determinar si es un carácter chino. 12. Al escribir un dll, debe usarlo. la unidad Sharemem para hacer referencia a la administración de memoria BORLANDMM.DLL. 13. PostMessage solo coloca el mensaje en la cola de mensajes y debe ponerse en cola para su procesamiento. SendMessage omite la cola de mensajes y se envía directamente al procedimiento de ventana, y no regresa hasta el valor de retorno del procesamiento de mensajes. 14. Mensajes de entrada y salida del mouse: CM_MOUSEENTER, CM_MOUSELEAVE15 Mensaje de cierre WM_QUERYENDsession16. ActiveHint para crear un formulario flotante. 17. Abrir el cuadro de diálogo de propiedades del archivo utiliza la función ShellAPI ShowFileProperties(FileName: String; Wnd: lpVerbo := PAnsiChar('properties'); lpIDList := nil; lpDirectory := nil; hIcon := 0; hProcess := 0; lpClass := nulo; final; ShellExecuteEX(@sfi);end;procedure TForm1.Button1Click(Sender: TObject);begin ShowFileProperties('c:/AA.txt', Handle);end;18. Cambiar la hora del sistema usa Windows,Dialogs,Forms;var MyTime : TsystemTime;comenzar FillChar(MyTime,sizeof(MyTime),#0); MyTime.wYear:=2003; MyTime.wMonth:=06; MyTime.wDay:=01; Si no es SetSystem(MyTime) entoncesShowmessage('Failure'); Cadena);
var
Búsqueda: TSearchRec;
Rec: Palabra;
Comenzar
DirFuente := DirFuente + '/';
Rec := FindFirst(SourceDir + '*.*', faAnyFile, Buscar);
Mientras Rec = 0 Hacer
Comenzar
Si Buscar.Nombre[1] <> '.' Entonces
Comenzar
Si (Search.Attr y faDirectory) = faDirectory Entonces
Comenzar
Windows.CreateDirectory(PChar(DirDestino + '/' + Buscar.Nombre), nil);
FileSetAttr(DestinoDir + '/' + Buscar.Nombre, FileGetAttr(OrigenDir + '/' + Buscar.Nombre));
X_Copy(SourceDir + '/' + Buscar.Nombre, DestinoDir + '/' + Buscar.Nombre);
fin
Demás
Comenzar
CopyFile(PChar(SourceDir + '/' + Search.Name),PChar(DestinationDir + '/' + Search.Name), Verdadero);
FileSetAttr(DirDestino + '/' + Buscar.Nombre, FileGetAttr(OrigenDir + '/' + Buscar.Nombre));
aplicación.ProcessMessages;
fin;
fin;
Rec := BuscarSiguiente(Buscar);
fin;
BuscarCerrar(Buscar);
fin;20. Dibujar el procedimiento de mapa de bits transparente DrawTrans(DestCanvas: TCanvas; ; ORBitmap:= NIL; pruebe ANDBitmap:= TBitmap.Create; ORBitmap:= TBitmap.Create; Src := Bounds(0,0, SrcBitmap.Width, SrcBitmap.Height); .Color := clNegro Lienzo.CopyMode := cmSrcCopy; Canvas.BrushCopy(Src, SrcBitmap, Src, AColor final; con ANDBitmap comienza Ancho:= SrcBitmap.Width:= SrcBitmap.Height; ; Lienzo.BrushCopy(Src, SrcBitmap, Src, AColor); final con DestCanvas: = CopyMode; CopyMode: = cmSrcAnd; CopyMode: = CM; ANDBitmap.Free; ORBitmap.Free; fin;fin;procedimiento TForm1.Button4Click(Remitente: TObject);begin DrawTrans(Image1.Canvas, 0,0, Image2.Picture.Bitmap, clBlack, clSilver);end;21. Obtener la función de velocidad de la CPU GetCpuSpeed: Extended;var t, mhi, mlo, nhi, nlo: dword; shr32: comp; comenzar shr32: = 65536; shr32: = shr32 *; 65536; t := GetTickCount; mientras que t = GetTickCount do ; asm DB 0FH,031H // rdtsc mov mhi,edx mov mlo,eax end; mientras que GetTickCount < (t + 1000) do ; nhi,edx mov nlo,eax end; Resultado:= ((nhi * shr32 + nlo) - (mhi * shr32 + mlo)) / 1E6;end;procedimiento TForm1.Button4Click(Sender: TObject);begin label1.Caption := FloatToStr(GetCpuSpeed) + 'mhz';end temporalmente; Escribí mucho y gradualmente actualizaré y agregaré más en el futuro.