Las habilidades básicas de desarrollo de DELPHI de nuestros antepasados.
Compilación: Inquilinos Fuente: Foro Monopoly
◇[DELPHI] Copiar archivos de Network Neighborhood
utiliza concha;
copyfile(pchar('newfile.txt'),pchar('//nombre de computadora/dirección/targer.txt'),false);
◇[DELPHI] produce el efecto de arrastre del mouse
Implementado a través del evento MouseMove, evento DragOver, evento EndDrag, como LABEL en PANEL:
var xpanel,ypanel,xlabel,ylabel:entero;
Evento MouseMove del PANEL: xpanel:=x;ypanel:=y;
Evento DragOver del PANEL: xpanel:=x;ypanel:=y;
Evento MouseMove de LABEL: xlabel:=x;ylabel:=y;
Evento EndDrag de LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] Obtener el directorio de WINDOWS
utiliza concha;
var windir:matriz[0..255] de char;
getwindowsdirectory(windir,tamaño de(windir));
O leer desde el registro, ubicación:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/Versión actual
Clave SystemRoot, obtenida como: C:/WINDOWS
◇[DELPHI] Dibuja líneas en FORM u otros contenedores
var x,y:matriz [0..50] de número entero;
lienzo.pen.color:=clred;
lienzo.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇[DELPHI] uso de la lista de cadenas
consejos var:tstringlist;
consejos:=tstringlist.create;
tips.loadfromfile('nombre de archivo.txt');
edit1.text:=consejos[0];
tips.add('cadena de adición de última línea');
tips.insert(1,'insertar cadena en la línea NO 2');
tips.savetofile('nuevoarchivo.txt');
consejos.gratis;
◇[DELPHI]Operación sencilla del portapapeles
richedit1.selectall;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
editar1.pastefromclipboard;
◇[DELPHI] Acerca de las operaciones de archivos y directorios
Chdir('c:/abcdir');Ir al directorio
Mkdir('dirname');Crear directorio
Rmdir('nombredir'); eliminar directorio
GetCurrentDir;//Obtiene el nombre del directorio actual, sin '/'
Getdir(0,s);//Obtener el nombre del directorio de trabajo s:='c:/abcdir';
Deletefile('abc.txt');//Eliminar archivo
Renamefile('old.txt','new.txt');//Cambio de nombre del archivo
ExtractFilename(filelistbox1.filename);//Obtener el nombre del archivo
ExtractFileExt(filelistbox1.filename);//Obtener el sufijo del archivo
◇[DELPHI] Atributos del archivo de proceso
attr:=filegetattr(filelistbox1.filename);
if (attr y faReadonly)=faReadonly entonces... //solo lectura
si (attr y faSysfile)=faSysfile entonces... //sistema
if (attr y faArchive)=faArchive entonces... //Archivar
if (attr y faHidden)=faHidden entonces ... //Ocultar
◇[DELPHI]Ejecutar archivos fuera del programa
WINEXEC//Llamar archivo ejecutable
winexec('command.com /c copia *.* c:/',SW_Normal);
winexec('iniciar abc.txt');
ShellExecute o ShellExecuteEx//Inicie el programa de asociación de archivos
función ejecutar archivo (nombre de archivo constante, parámetros, directorio predeterminado: cadena; showCmd: entero): THandle;
ExecuteFile('C:/abc/a.txt','x.abc','c:/abc/',0);
ExecuteFile('http://tingweb.yeah.net','','',0);
ExecuteFile('mailto:[email protected]','','',0);
◇[DELPHI] Obtenga el nombre del proceso que se ejecuta en el sistema
var hCurrentWindow:HWnd;szText:array[0..254] de char;
comenzar
hCurrentWindow:=Getwindow(handle,GW_HWndFrist);
mientras que hCurrentWindow <> 0 lo hace
comenzar
si Getwindowtext(hcurrnetwindow,@sztext,255)>0 entonces listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
fin;
fin;
◇[DELPHI]Acerca de la incrustación de ensamblajes
Fin del Asm;
EAX, ECX y EDX se pueden modificar a voluntad; ESI, EDI, ESP, EBP y EBX no se pueden modificar.
◇[DELPHI]Acerca de la función de conversión de tipo
FloatToStr//Punto flotante a cadena
FloatToStrF//Coma flotante formateada a cadena
IntToHex//Entero a hexadecimal
TiempoAStr
FechaAStr
FechaHoraToStr
FmtStr// Genera una cadena en el formato especificado
FormatDateTime('AAAA-MM-DD,hh-mm-ss',FECHA);
◇[DELPHI]Procedimientos y funciones de cadena
Insert(obj,target,pos);//El destino de la cadena se inserta en la posición de pos. Si el resultado de la inserción es mayor que la longitud máxima del destino, los caracteres sobrantes se truncarán. Si Pos está fuera de 255, se producirá un error de tiempo de ejecución. Por ejemplo, st:='Brian', luego Insertar('OK',st,2) hará que st se convierta en 'BrOKian'.
Delete(st,pos,Num);// Elimina una subcadena de Num (entero) caracteres a partir de la posición pos (entero) en la cadena st. Por ejemplo, st:='Brian', luego Eliminar (st,3,2) se convertirá en Brn.
Str(value,st);//Convierte el valor numérico (entero o tipo real) en una cadena y colócalo en st. Por ejemplo, cuando a=2.5E4, str(a:10,st) hará que el valor de st sea '25000'.
Val(st,var,code);//Convierta la expresión de cadena st en el valor entero o real correspondiente y guárdelo en var. St debe ser una cadena que represente un valor numérico y cumplir con las reglas para constantes numéricas. Durante el proceso de conversión, si no se detecta ningún error, el código de la variable se establece en 0; de lo contrario, se establece en la posición del primer carácter de error. Por ejemplo, st:=25.4E3, x es una variable real, entonces val(st,x,code) hará que el valor de X sea 25400 y el valor del código 0.
Copy(st.pos.num);//Devuelve una subcadena que comienza en la posición pos (entero) en la cadena st y que contiene num (entero) caracteres. Si pos es mayor que la longitud de la cadena st, se devolverá una cadena vacía. Si pos está fuera de 255, se producirá un error de tiempo de ejecución. Por ejemplo, st:='Brian', luego Copiar(st,2,2) devuelve 'ri'.
Concat(st1,st2,st3...,stn);//Concatena las cadenas representadas por todas las variables independientes en el orden indicado y devuelve el valor concatenado. Si la longitud del resultado es 255, se producirá un error de tiempo de ejecución. Por ejemplo, st1:='Brian',st2:=' ',st3:='Wilfred', entonces Concat(st1,st2,st3) devuelve 'Brian Wilfred'.
Longitud(st);//Devuelve la longitud de la expresión de cadena st. Por ejemplo, st:='Brian', el valor de retorno de Longitud(st) es 5.
Pos(obj,target);//Devuelve la posición donde la cadena obj aparece por primera vez en la cadena de destino target. Si el objetivo no tiene una cadena coincidente, el valor de retorno de la función Pos es 0. Por ejemplo, target:='Brian Wilfred', entonces el valor de retorno de Pos('Wil',target) es 7 y el valor de retorno de Pos('hurbet',target) es 0.
◇[DELPHI]Acerca del manejo del registro
utiliza Registro;
var reg:Tregistro;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('Panel de control/Escritorio',falso);
reg.WriteString('Título Fondo de Pantalla','0');
reg.writeString('Wallpaper',filelistbox1.filename);
reg.closereg;
libre de registro;
◇[DELPHI]Acerca de los nombres de constantes del teclado
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:$70(112)--$7B(123)
Arizona:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
◇[DELPHI] Determinar preliminarmente el idioma nativo del programa
Indicador DOS del software DELPHI: este programa debe ejecutarse en Win32.
Aviso de DOS para el software VC++: Este programa no se puede ejecutar en modo DOS.
◇[DELPHI]Cookies operativas
respuesta.cookies("nombre").dominio:='http://www.086net.com';
con respuesta.cookies.añadir hacer
comenzar
nombre:='nombre de usuario';
valor:='nombre de usuario';
fin
◇[DELPHI] agregado al enlace del menú del documento
utiliza shellapi,shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//Agregar conexión
shAddToRecentDocs(shArd_path,nil);//Borrar
◇[Varios] Copia de seguridad del diccionario inteligente de métodos de entrada ABC
windows/sistema/usuario.rem
windows/system/tmmr.rem
◇[DELPHI] Determinar los botones del mouse
si GetAsyncKeyState(VK_LButton)<>0 entonces... //Botón izquierdo
si GetAsyncKeyState(VK_MButton)<>0 entonces... //tecla central
si GetAsyncKeyState(VK_RButton)<>0 entonces... //clic derecho
◇[DELPHI]Establecer la visualización máxima del formulario
evento onFormCreate
self.width:=screen.width;
self.height:=pantalla.height;
◇Botón [DELPHI] para aceptar mensajes
Procesado en el evento OnCreate: application.OnMessage:=MyOnMessage;
procedimiento TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
comenzar
si msg.message=256 entonces... //CUALQUIER clave
si msg.message=112 entonces... //F1
si msg.message=113 entonces... //F2
fin;
◇[Varios]Ocultar carpetas compartidas
Efecto de compartir: accesible, pero invisible (en gestión de recursos, Network Neighborhood)
Nombra la acción: dirección$
Visita: //computadora/dirección/
◇[java Script] Efectos comúnmente utilizados en páginas web de Java Script
La página web está programada para cerrarse en 60 segundos.
<script language="java script"><!--
settimeout('ventana.cerrar();',60000)
--></script>
cerrar ventana
<a href="/" onclick="Javascript:window.close();return false;">Cerrar</a>
Transferencia de URL programada
<meta http-equiv="actualizar" contenido="40;url=http://www.086net.com">
Establecer como página de inicio
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">Establecer como página de inicio</a>
Marcar este sitio como favorito
<a href="javascript:window.external.addfavorite('http://086net.com','[无名pier]')">Favorito este sitio</a>
Unirse al canal
<a href="javascript:window.external.addchannel('http://086net.com')">Agregar canal</a>
◇[DELPHI]Edición de texto relacionada
checkbox1.checked:=no checkbox1.checked;
si checkbox1.checked entonces richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//bold
si checkbox1.checked entonces richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
si checkbox1.checked entonces richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//Izquierda
memo1.alignment:=taRightJustify;//derecha
memo1.alignment:=taCenter;//Centrado
◇[DELPHI] Generar color de texto aleatoriamente
aleatorizar;//semilla aleatoria
memo1.font.color:=rgb(aleatorio(255),aleatorio(255),aleatorio(255));
◇[DELPHI]Número de serie del parche de actualización DELPHI5 UPDATE
1000003185
90X25fx0
◇[DELPHI]Filtrado de caracteres ilegales en nombres de archivos
para i:=1 a longitud(es) hacer
si s[i] en ['/','/',':','*','?','<','>','|'] entonces
◇[DELPHI]Definición y descripción de la función de conversión
datetimetofiledate (datetime:Tdatetime):longint Convierte un valor de fecha y hora en formato Tdatetime a un valor de fecha y hora en formato DOS;
datetimetostr (datetime:Tdatetime):string; Convierte la variable de formato Tdatatime en una cadena. Si el parámetro datetime no contiene un valor de fecha, la fecha de la cadena devuelta se mostrará como 00/00/00. el parámetro de fecha y hora, la cadena devuelta será La parte de la hora se muestra como 00:00:00 a.m.
datetimetostring (cadena de resultado var;
formato constante: cadena;
datetime:Tdatetime); convierte los valores de fecha y hora de acuerdo con la cadena de formato dada, el resultado es la cadena de resultado, el formato es la cadena de formato de conversión, la fecha y hora es el valor de fecha y hora.
datetostr (fecha:Tdatetime) utiliza la cadena de formato definida por la variable global shortdateformat para convertir el parámetro de fecha en la cadena correspondiente
floattodecimal (var resultado:Tfloatrec;valor:
extendido;precisión,decimales:
entero); convertir un número de punto flotante a representación decimal
floattostr (valor: extendido): cadena Convierte el valor de punto flotante en formato de cadena. Esta conversión utiliza el formato numérico ordinario y el número efectivo de dígitos convertidos es 15.
floattotext (búfer:pchar;valor:extendido;
formato: formato Tfloat; precisión,
dígitos: entero): entero; Utilice el formato, la precisión y el decimal dados para convertir el valor de punto flotante en representación decimal. El resultado de la conversión se almacena en el parámetro del búfer. El valor de retorno de la función es el número de caracteres almacenados en el búfer. El búfer no es un búfer de cadena de 0 resultados.
floattotextfmt (búfer:pchar;valor:extendido;
formato:pchar):integer Utilice el formato dado para convertir el valor de punto flotante en representación decimal. El resultado de la conversión se almacena en el parámetro del búfer. El valor de retorno de la función es el número de caracteres almacenados en el búfer.
intttohex (valor:entero largo;dígitos:entero):
cadena; convierte el valor numérico dado en una cadena hexadecimal. Los dígitos del parámetro proporcionan el número de dígitos contenidos en la cadena de resultado de la conversión.
inttostr (valor:longint):cadena convierte un número entero en una cadena decimal
strtodate (const S:string):Tdatetime Convierte una cadena en un valor de fecha. S debe contener una cadena de fecha en formato legal.
strtodatetime (const S:string):Tdatetime Convierte la cadena S al formato de fecha y hora, S debe tener formato MM/DD/AA HH:MM:SS[AM|PM], donde los separadores de fecha y hora son los mismos que el período del sistema Constante de tiempo Relacionada con la configuración. Si no se especifica información AM o PM, se utiliza el reloj de 24 horas.
strtofloat (const S:string):extended; convierte la cadena dada en un número de punto flotante. La cadena tiene el siguiente formato:
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint Convierte una cadena numérica en un número entero. La cadena puede estar en formato decimal o hexadecimal. Si la cadena no es una cadena numérica legal, el sistema generará una excepción ECONVERTERROR.
strtointdef (const S:cadena;predeterminado:
longint):longint; convierte la cadena S en un número. Si S no se puede convertir en un número, la función strtointdef devuelve el valor del parámetro predeterminado.
strtotime (const S:string):Tdatetime Convierte la cadena S en un valor TDATETIME. S tiene el formato HH:MM:SS[AM|PM].
timetostr (time:Tdatetime):string; convierte el parámetro TIME en una cadena. El formato de la cadena de resultados de la conversión está relacionado con la configuración de las constantes relacionadas con el tiempo del sistema.
◇El programa [DELPHI] no aparece en ALT+CTRL+SUPR
Agregar declaración después de la implementación:
función RegisterServiceProcess(dwProcessID, dwType: Entero): Entero stdcall externo 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID, 1);//Ocultar
RegisterServiceProcess(GetCurrentProcessID, 0);//Mostrar
Invisible con ALT+SUPR+CTRL
◇El programa [DELPHI] no aparece en la barra de tareas
usa ventanas
var
Estilo extendido: entero;
comenzar
Aplicación.Inicializar;
//================================================== ===============
Estilo extendido := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle O WS_EX_TOOLWINDOW
Y NO WS_EX_APPWINDOW);
//================================================== ================
Aplicación.CreateForm(TForm1, Form1);
Aplicación.Ejecutar;
fin.
◇[DELPHI]Cómo determinar si la red de acceso telefónico está activada o desactivada
si GetSystemMetrics(SM_NETWORK) Y $01 = $01 entonces
mostrar mensaje('¡En línea!')
else showmessage('¡No en línea!');
◇[DELPHI]Convertir IP en nombre de dominio
función ObtenerNombreDominio(Ip:cadena):cadena;
var
pH: PHostent;
datos:twsadata;
ii:dPalabra;
comenzar
WSAStartup ($101, Datos);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
si (ph<>nil) entonces
resultado:=pH.h_nombre
demás
resultado:='';
Limpieza WSA;
fin;
◇[DELPHI] Cómo lidiar con el "menú contextual"
var
reg: TRegistry;
comenzar
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', verdadero);
reg.WriteString('', '"' + aplicación.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', falso);
reg.WriteString('', 'Operación(&C)');
reg.CloseKey;
reg.Gratis;
mostrar mensaje('¡HECHO!');
fin;
◇[DELPHI]Enviar valor de clave virtual ctrl V
procedimiento de envío y pegado;
comenzar
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
fin;
◇[DELPHI]La letra de la unidad óptica actual
procedimiento getcdrom(var cd:char);
var
cadena:cadena;
controladores: entero;
conductor:carbón;
yo,temp:entero;
comenzar
controladores:=getlogicdrives;
temp:=(1 y controladores);
para i:=0 a 26 hacer
comenzar
si temperatura = 1 entonces
comenzar
controlador:=char(i+integer('a'));
cadena:=controlador+':';
si getdrivetype(pchar(str))=drive_cdrom entonces
comenzar
cd:=controlador;
salida;
fin;
fin;
conductores:=(conductores shr 1);
temp:=(1 y controladores);
fin;
fin;
◇[DELPHI]Cifrado y descifrado de caracteres
función cryptstr(const s:cadena; estilo: dword):cadena;
var
yo: número entero;
fkey: número entero;
comenzar
resultado:='';
tipo de caso de
0: paso de configuración;
comenzar
aleatorizar;
fkey := aleatorio($ff);
para i:=1 a longitud(es) hacer
resultado := resultado+chr( ord(s[i]) xor i xor fkey);
resultado := resultado + char(fkey);
fin;
1: obtener pase
comenzar
fkey := ord(s[longitud(es)]);
para i:=1 a longitud(es) - 1 hacer
resultado := resultado+chr( ord(s[i]) xor i xor fkey);
fin;
fin;
□◇[DELPHI] Enviar claves simuladas a otras aplicaciones
var
h:TMango;
comenzar
h := FindWindow(nil, 'Título de la aplicación');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//Enviar tecla F9
fin;
□◇[DELPHI] Formato de datos DAO compatible con DELPHI
td.Fields.Append(td.CreateField ('dbBoolean',dbBoolean,0));
td.Fields.Append(td.CreateField ('dbByte',dbByte,0));
td.Fields.Append(td.CreateField ('dbInteger',dbInteger,0));
td.Fields.Append(td.CreateField ('dbLong',dbLong,0));
td.Fields.Append(td.CreateField ('dbCurrency',dbCurrency,0));
td.Fields.Append(td.CreateField ('dbSingle',dbSingle,0));
td.Fields.Append(td.CreateField ('dbDouble',dbDouble,0));
td.Fields.Append(td.CreateField ('dbDate',dbDate,0));
td.Fields.Append(td.CreateField ('dbBinary',dbBinary,0));
td.Fields.Append(td.CreateField ('dbText',dbText,0));
td.Fields.Append(td.CreateField ('dbLongBinary',dbLongBinary,0));
td.Fields.Append(td.CreateField ('dbMemo',dbMemo,0));
td.Fields['ID'].Set_Attributes(dbAutoIncrField);//Campo de incremento automático
□◇[DELPHI]DELPHI configura los pasos de MS SQL 7 y BDE
El primer paso es configurar ODBC:
Primero configure la fuente de datos en ODBC. Después de instalar SQL Server7.0, debería haber dos elementos en "DSN del sistema" en ODBC.
Fuentes de datos, una es MQIS y la otra es LocalSever. Seleccione cualquiera y haga clic en el botón de configuración. No conozco su SQL7.0.
¿Está instalado en la máquina local? Si es así, continúe directamente con el siguiente paso. Si no, complete la columna del servidor.
Server, luego continúe con el siguiente paso y complete el ID de inicio de sesión y la contraseña (el ID de inicio de sesión y la contraseña son opciones de usuario en SQL7.0
ubicado en el centro).
El segundo paso es configurar BDE:
Abra BDE de Delphi y haga clic en MQIS o LocalServer. Se le solicitará un nombre de usuario y contraseña. Esto es lo mismo que.
El nombre de usuario y la contraseña de ODBC son los mismos, simplemente complételos.
El tercer paso es configurar el programa:
Si está utilizando TTable, seleccione MQIS o LocalServer en el nombre de la base de datos de TTable y luego
Simplemente seleccione Venta en TableName, luego cambie Activo a Verdadero, aparecerá un cuadro de diálogo emergente y completará el usuario.
nombre y contraseña.
Si está utilizando TQuery, haga clic derecho en TQuery y haga clic en "SQL Builder". Esto se configura a través de la interfaz.
Declaración SQL, o complete la declaración SQL en el SQL de TQuery. Finalmente, no olvide cambiar Activo a Verdadero.
También es posible configurar TQuery durante la operación; consulte la ayuda de Delphi para obtener más detalles.
□◇[DELPHI] Obtener el valor RGB de un determinado punto de la imagen
procedimiento TForm1.Image1MouseDown(Remitente: TObject; Botón: TMouseButton;
Mayús: TShiftState; X, Y: Entero);
var
rojo, verde, azul: byte;
yo: entero;
comenzar
i:= imagen1.Canvas.Pixels[x,y];
Azul:= GetBValue(i);
Verde:= ObtenerGValue(i):
Rojo:= GetRValue(i);
Etiqueta1.Caption:=inttostr(Rojo);
Label2.Caption:=inttostr(Verde);
Etiqueta3.Caption:=inttostr(Azul);
fin;
□◇[DELPHI]Acerca de la descomposición y conversión del formato de fecha
var año,mes,día:palabra;now2:Tdatatime;
ahora2:=fecha();
fecha decodificada (ahora2, año, mes, día);
lable1.Text :=inttostr(año)+'año'+inttostr(mes)+'mes'+inttostr(día)+'día';
◇[DELPHI]Cómo determinar el modo de conexión de red actual
El resultado del juicio es el modo MODEM, LAN o servidor proxy.
utiliza wininet;
Tipo de conexión de función: booleano;
banderas var: dword;
comenzar
Resultado := InternetGetConnectedState(@flags, 0);
si resultado entonces
comenzar
si (flags e INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM entonces
comenzar
mostrar mensaje('Módem');
fin;
si (flags e INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN entonces
comenzar
mostrar mensaje('LAN');
fin;
si (flags e INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY entonces
comenzar
mostrar mensaje('Proxy');
fin;
si (flags e INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY entonces
comenzar
showmessage('Módem ocupado');
fin;
fin;
fin;
◇[DELPHI]Cómo determinar si una cadena es una dirección de CORREO ELECTRÓNICO válida
función IsEMail (correo electrónico: cadena): booleano;
var s: Cadena;ETpos: Entero;
comenzar
ETpos:= pos('@', correo electrónico);
si ETpos > 1 entonces
comenzar
s:= copiar(Correo electrónico,ETpos+1,Longitud(Correo electrónico));
si (pos('.', s) > 1) y (pos('.', s) < longitud(s)) entonces
Resultado:= verdadero else Resultado:= falso;
fin
demás
Resultado:= falso;
fin;
◇[DELPHI] Determinar si el sistema está conectado a INTERNET
Es necesario introducir la función InetIsOffline en URL.DLL.
La declaración de función es:
función InetIsOffline (Bandera: Entero): booleano; llamada estándar 'URL.DLL';
Luego puede llamar a la función para determinar si el sistema está conectado a INTERNET.
si InetIsOffline(0) entonces ShowMessage('¡no conectado!')
else ShowMessage('¡conectado!');
Esta función devuelve VERDADERO si el sistema local no está conectado a INTERNET.
Adjunto:
La mayoría de los sistemas con IE u OFFICE97 tienen esta DLL disponible para llamar.
Inet está fuera de línea
BOOL InetIsOffline(
DWORD dwFlags,
);
◇[DELPHI]Reproduce y pausa fácilmente archivos WAV
utiliza mmsystem;
función PlayWav (const FileName: cadena): booleano;
comenzar
Resultado := PlaySound(PChar(Nombre de archivo), 0, SND_ASYNC);
fin;
procedimiento StopWav;
var
buffer: matriz[0..2] de char;
comenzar
búfer[0] := #0;
PlaySound(Buffer, 0, SND_PURGE);
fin;
◇[DELPHI] Obtener información del BIOS de la máquina
con Memo1.Las líneas hacen
comenzar
Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
fin;
◇[DELPHI] Descargar archivos de Internet
utiliza UrlMon;
función DescargarArchivo(Fuente, Destino: cadena): booleano;
comenzar
intentar
Resultado := UrlDownloadToFile(nil, PChar(fuente), PChar(Dest), 0, nil) = 0;
excepto
Resultado := Falso;
fin;
fin;
si DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') entonces
ShowMessage('Descarga exitosa')
else ShowMessage('Descarga fallida')
◇[DELPHI]Resolver la dirección IP del servidor
usa winsock
función IPAddrToName(IPAddr: Cadena): Cadena;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
comenzar
WSAStartup ($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
si HostEnt<>nil entonces resultado:=StrPas(Hostent^.h_name) else resultado:='';
fin;
◇[DELPHI] Obtenga la conexión en el acceso directo
función ExeFromLink (const linkname: cadena): cadena;
var
Fdir,
Nombre,
Nombre del archivo ejecutable: PChar;
z: número entero;
comenzar
NombreEje:= StrAlloc(MAX_PATH);
NombreF:= StrAlloc(MAX_PATH);
FDir:= StrAlloc(MAX_PATH);
StrPCopy(FName, ExtractFileName(nombredelenlace));
StrPCopy(FDir, ExtractFilePath(nombre del enlace));
z:= FindExecutable(FName, FDir, ExeName);
si z > 32 entonces
Resultado:= StrPas(NombreExe)
demás
Resultado:= '';
StrDispose(FDir);
StrDispose(FNombre);
StrDispose(NombreExe);
fin;
◇[DELPHI]Controla la finalización automática de TCombobox
{Propiedad 'ordenada' de TCombobox en verdadero }
var última clave: palabra //variable global
//Evento OnChange de TCombobox
procedimiento TForm1.AutoCompleteChange(Remitente: TObject);
var
SearchStr: cadena;
retVal: entero;
comenzar
SearchStr := (Remitente como TCombobox).Texto;
si lastKey <> VK_BACK entonces // retroceso: VK_BACK o $08
comenzar
retVal := (Remitente como TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
si retVal > CB_Err entonces
comenzar
(Remitente como TCombobox).ItemIndex := retVal;
(Remitente como TCombobox).SelStart := Longitud(SearchStr);
(Remitente como TCombobox).SelLength :=
(Longitud ((Remitente como TCombobox). Texto) - Longitud (SearchStr));
fin; // valorRet > CB_Err
fin; // última clave <> VK_BACK
última clave := 0 // restablecer última clave
fin;
//Evento OnKeyDown de TCombobox
procedimiento TForm1.AutoCompleteKeyDown(Remitente: TObject; var Clave: Word;
Cambio: TShiftState);
comenzar
última clave: = clave;
fin;
◇[DELPHI]Cómo borrar un directorio
función DirectorioVacío(ElDirectorio:Cadena; Recursivo: Booleano):
booleano;
var
SearchRec: TSearchRec;
Res: Entero;
comenzar
Resultado := Falso;
ElDirectorio := NormalDir(ElDirectorio);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
intentar
mientras Res = 0 hacer
comenzar
si (SearchRec.Name <> '.') y (SearchRec.Name <> '..') entonces
comenzar
if ((SearchRec.Attr y faDirectory) > 0) y recursivo
entonces comienza
DirectorioVacío(ElDirectorio + SearchRec.Name, Verdadero);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
fin
si no, empezar
EliminarArchivo(PChar(ElDirectorio + SearchRec.Name))
fin;
fin;
Res := BuscarSiguiente(BuscarRec);
fin;
Resultado := Verdadero;
finalmente
BuscarClose(SearchRec.FindHandle);
fin;
fin;
◇[DELPHI]Cómo calcular el tamaño de un directorio
función GetDirectorySize(const ADirectory: cadena): entero;
var
Dirección: TSearchRec;
Ret: número entero;
Ruta: cadena;
comenzar
Resultado := 0;
Ruta := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
si Ret <> NO_ERROR entonces salga;
intentar
mientras ret=NO_ERROR hacer
comenzar
inc(Resultado, Tamaño Dir.);
si (Dir.Attr en [faDirectory]) y (Dir.Name[1] <> '.') entonces
Inc(Resultado, GetDirectorySize(Ruta + Nombre del directorio + '/*.*'));
Ret := Sysutils.FindNext(Dir);
fin;
finalmente
Sysutils.FindClose(Dir);
fin;
fin;
◇[DELPHI]Cómo agregar el instalador a la lista de desinstalación
Opere el registro de la siguiente manera:
1. Cree una clave principal en la clave HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall con cualquier nombre.
EjemploHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. Introduzca dos valores de cadena en HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall.
Los nombres de estos dos valores de cadena son específicos: DisplayName y UninstallString.
3. Asigne el valor de la cadena DisplayName al nombre que se muestra en "Eliminar lista de aplicaciones", como por ejemplo "Apuntando a desinstalar una";
Asigne la cadena UninstallString al comando de eliminación ejecutado, como C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"
◇[DELPHI]Mensaje de cierre de sesión WM_QUERYEND interceptado
tipo
TForm1 = clase(TForm)
procedimiento WMQueryEndSession (var Mensaje: TWMQueryEndSession mensaje WM_QUERYENDSESSION);
procedimiento CMEraseBkgnd(var Mensaje:TWMEraseBkgnd);Mensaje WM_ERASEBKGND;
privado
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;
procedimiento TForm1.WMQueryEndSession(var Mensaje: TWMQueryEndSession);
comenzar
Showmessage('la computadora está a punto de apagarse');
fin;
◇[DELPHI]Consigue vecinos en línea
procedimiento getnethood();//NT se utiliza como servidor y la depuración se realiza en WIN98.
var
a,i:entero;
código de error: entero;
netres:matriz[0..1023] de netresource;
mango de enumeración: mango;
enumeraciones:dword;
tamaño del búfer:dword;
s:cadena;
mylistitems:tlistitems;
mylistitem:tlistitem;
tododominio:tstrings;
comenzar //listcomputer es una vista de lista para enumerar todas las computadoras;controlcenter es un formulario.
tododominio:=tstringlist.Create;
con netres[0] comienza
dwscope :=RESOURCE_GLOBALNET;
tipo dw :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomentario :=nulo;
proveedor lp :=nil;
fin; // Obtener todos los campos
código de error:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
si errcode=NO_ERROR entonces comienza
enumeraciones:=1024;
tamaño del buffer:=tamañode(netres);
código de error:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
fin;
a:=0;
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Claro;
mientras que (string(netres[a].lpprovider)<>'') y (errcode=NO_ERROR) lo hacen
comenzar
alldomain.Add (netres[a].lpremotename);
a:=a+1;
fin;
wnetcloseenum(enumhandle);
// Obtener todas las computadoras
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Claro;
para i:=0 a alldomain.Count-1 hacer
comenzar
con netres[0] comienza
dwscope :=RESOURCE_GLOBALNET;
tipo dw :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(tododominio[i]);
lpcomentario :=nulo;
proveedor lp :=nil;
fin;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
si código de error = NO_ERROR entonces
comenzar
EntradasEnum:=1024;
Tamaño del búfer:=TamañoDe(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
fin;
a:=0;
mientras que (string(netres[a].lpprovider)<>'') y (errcode=NO_ERROR) lo hacen
comenzar
milistitem :=mylistitems.Add;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
fin;
wnetcloseenum(enumhandle);
fin;
fin;
◇[DELPHI] Obtener el directorio compartido en una computadora determinada
procedimiento getsharefolder (const nombre de computadora: cadena);
var
código de error,a:entero;
netres:matriz[0..1023] de netresource;
mango de enumeración: mango;
enumeraciones, tamaño del búfer: dword;
s:cadena;
mylistitems:tlistitems;
mylistitem:tlistitem;
miscadenas:tstringlist;
comenzar
con netres[0] comienza
dwscope :=RESOURCE_GLOBALNET;
tipo dw :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(nombredecomputadora);
lpcomentario :=nulo;
proveedor lp :=nil;
end; // Obtener el nodo raíz
código de error:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
si código de error = NO_ERROR entonces
comenzar
EntradasEnum:=1024;
Tamaño del búfer:=TamañoDe(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
fin;
wnetcloseenum(enumhandle);
a:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.Claro;
mientras que (string(netres[a].lpprovider)<>'') y (errcode=NO_ERROR) lo hacen
comenzar
con mylistitems hacer
comenzar
mylistitem:=añadir;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
fin;
a:=a+1;
fin;
fin;
◇[DELPHI] Obtenga el número de serie del disco duro
var SerialNum: pdword; a, b: dword; Búfer: matriz [0..255] de char;
comenzar
si GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) entonces Label1.Caption := IntToStr(SerialNum^);
fin;
◇[DELPHI]Paso automático de página de MEMO
Procedimiento ScrollMemo(Nota: TMemo; Dirección: char);
comenzar
dirección del caso de
'd': comenzar
SendMessage(Memo.Handle, { HWND del control Memo }
WM_VSCROLL, {Mensaje de Windows}
SB_PAGEDOWN, {Comando de desplazamiento}
0) { No utilizado }
fin;
'u': comenzar
SendMessage(Memo.Handle, { HWND del control Memo }
WM_VSCROLL, {Mensaje de Windows}
SB_PAGEUP, {Comando de desplazamiento}
0); {No utilizado}
fin;
fin;
fin;
procedimiento TForm1.Button1Click(Remitente: TObject);
comenzar
ScrollMemo(Memo1,'d'); //página arriba
fin;
procedimiento TForm1.Button1Click(Remitente: TObject);
comenzar
ScrollMemo(Memo1,'u'); //Baje la página
fin;
◇[DELPHI]Presione enter para ir a la siguiente posición en DBGrid (tecla Tabulador)
procedimiento TForm1.DBGrid1KeyPress(Remitente: TObject; var Clave: Char);
comenzar
si clave = #13 entonces
si DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 entonces
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
demás
comenzar
Tabla1.siguiente;
DBGrid1.Columns[0].field.FocusControl;
fin;
fin;
◇[DELPHI]Cómo instalar el control
Método de instalación:
1. Para un solo control, Componente-->instalar componente...-->archivo PAS o DCU-->instalar
2. Para paquetes de control con archivos *.dpk, Archivo-->abrir (seleccione *.dpk en el cuadro de lista desplegable)-->instalar.
3. Para paquetes de control con archivos *.dpl, Instalar paquetes-->Agregar-->nombre de archivo dpl.
4. Si el botón Instalar anterior no es válido, pruebe con el botón Compilar.
5. Si es una biblioteca en tiempo de ejecución, agréguela a runtimepackes en paquetes en la opción.
Si indica que no se puede encontrar el archivo durante la compilación, generalmente se debe a que el directorio de instalación del control no está en el directorio Lib de Delphi. Hay dos formas de resolver el problema:
1. Copie los archivos de instalación originales en el directorio Lib de Delphi.
2. O agregue la ruta del código original del control al directorio Lib de Delphi en Herramientas-->Opciones de entorno.
◇[DELPHI] Eliminar completamente el directorio (deltree)
procedimiento TForm1.DeleteDirectory(strDir:String);
var
Sr: TSearchRec;
FileAttrs: entero;
strfilename:cadena;
strPth:cadena;
comenzar
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
si FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 entonces
comenzar
si (sr.Attr y FileAttrs) = sr.Attr entonces
comenzar
strfilename:=sr.Nombre;
si el archivo existe (strpth+'/'+strdir+'/'+strfilename) entonces
eliminararchivo(strpth+'/'+strdir+'/'+strfilename);
fin;
mientras FindNext(sr) = 0 hacer
comenzar
si (sr.Attr y FileAttrs) = sr.Attr entonces
comenzar
strfilename:=sr.nombre;
si el archivo existe (strpth+'/'+strdir+'/'+strfilename) entonces
eliminararchivo(strpth+'/'+strdir+'/'+strfilename);
fin;
fin;
BuscarCerrar(sr);
eliminadoir(strpth+'/'+strdir);
fin;
fin;
◇[DELPHI] Obtenga la información de fila y columna del cursor actual del control TMemo en Tpoint
1.función ReadCursorPos (SourceMemo: TMemo): TPoint;
var Punto: TPoint;
comenzar
point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
Resultado := Punto;
fin;
2.LineLength:=SendMessage(memol.handle, EM—LINELENGTH, Cpos, 0);
◇[DELPHI]Leer el número de serie del disco duro
función GetDiskSerial(DiskChar: Char): cadena;
var
Número de serie: pdword;
a, b: dpalabra;
Búfer: matriz [0..255] de char;
comenzar
resultado: = "";
Si getVolumeInformation (PCHAR (diskchar+":/"), buffer, sizeof (buffer), Serialnum,
a, b, nulo, 0) entonces
Resultado: = intToStr (serialnum^);
fin;
◇ [Internet] habilidades integrales comunes de CSS
1. P: Primera letra {Fuente del tamaño: 300%;
2. <Link rel = stylesheet href = "BaseSs.css" title = "contemporáneo"> // Conecte una hoja de estilo externo
3. Incrustar una hoja de estilo
<Style type = "text/css" medios = pantalla>
<!--
@Import URL (http://www.htmlhelp.com/style.css); // Importar externamente una hoja de estilo
@import url (/stylesheets/punk.css); // igual que el anterior
Cuerpo {fondo: url (foo.gif) rojo;
.punk {color: lima;
#WDG97 {Font-Size: más grande} // Consulte 6 para referencias.
-->
</style>
4. <P style = "color: rojo; fuente de fuentes: 'New Century Schoolbook', serif"> // estilo en línea
<Span style = "Font-Family: Arial"> Arial </span> // span acepta atributos de estilo, clase e ID
<Div class = nota> <p> div puede contener párrafos, títulos, tablas e incluso otras partes </p> </div>
5. <H1 class = punk> atributo de clase </h1> // Consulte 3 para la definición.
6. <P id = WDG97> Atributo de ID </p> // Consulte 3 para la definición.
7. Lista de propiedades
Estilo de fuentes: estilo de fuentes: [Normal |
Tamaño de la fuente:
Decoración de texto: Decoración de texto: [Subrayado ||
Transformación de texto: transformación de texto: [Ninguno |
Color de fondo: Color de fondo: [Color> |
Imagen de fondo: imagen de fondo: [<URLS> |
Línea-aguja: [Normal |
Borderio: [Ninguno |
FLOAT: FLOAT: [Izquierda |
8. unidad de longitud
Unidades relativas:
em (em, la altura de la fuente del elemento)
ex (x-aguja, la altura de la letra "x")
PX (píxeles, en relación con la resolución de pantalla)
Longitud absoluta:
en (pulgada, 1 pulgada = 2.54 centímetros)
CM (centímetro, 1 centímetro = 10 milímetros)
mm (medidor)
PT (punto, 1 punto = 1/72 pulgadas)
PC (PA, 1 PA = 12 puntos)
◇ [Delphi] Breves pasos para hacer VCL
1. Crear eventos de método de atributo de componentes
(Cree unidades de biblioteca, heredar como nuevos tipos, agregar propiedades, métodos, eventos, registrar componentes y crear archivos de paquete)
2. Procesamiento de mensajes
3. Manejo de Excepción
4. Piezas visibles
◇ [Delphi] Carga de la biblioteca de enlaces dinámicos
Carga estática: nombre del procedimiento; externo 'lib.dll';
Carga dinámica: mango var: thandle;
manejo: = LoadLibrary ('lib.dll');
Si maneja <> 0 entonces
comenzar
{Dosomething}
freelibrary (mango);
fin;
◇ [Delphi] Variables y direcciones del puntero
var x, y: entero; p:^entero; // puntero a la variable entero
x: = 10;
p: =@x; // La dirección de la variable x
y: = p^; // Asignar puntero p a y
@@ procedimiento // Devuelve la dirección de memoria de la variable de proceso
◇ [Delphi] determina si el personaje es un personaje chino
Bytetype ('Cómo estás jaja', 1) = mbleadbyte // es el primer personaje
Bytetype ('Cómo estás jaja', 2) = mbtrailbyte // es el segundo personaje
Bytetype ('Cómo estás jaja', 5) = mbsingleByte // No es un personaje chino
◇ [Delphi] Operación de posicionamiento de memo
memo1.lines.delete (0) // Eliminar línea 1
Memo1.SelStart: = 10 // ubica 10 bytes
◇ [Delphi] Obtener código interno de carácter de doble byte
función getit (s: string): entero;
comenzar
Resultado: = byte (s [1]) * $ 100 + byte (s [2]);
fin;
Uso: getit ('cálculo') // $ bcc6 que es decimal 48326
◇ [Delphi] Llame al procedimiento de almacenamiento de datos
El procedimiento almacenado es el siguiente:
Crear procedimiento addRecord (
Record1 Varchar (10)
Record2 Varchar (20)
)
como
comenzar
Insertar en Tablename (Field1, Field2) Valores (: Record1 ,: Record2)
fin
Ejecutar el procedimiento almacenado:
Ejecutar el procedimiento AddRecord ("UrRecord1", "UrRecord2")
◇ [Delphi] Guardar archivos en los campos de blob
función blobContentToString (const fileName: string): string;
comenzar
con tfilErteam.create (nombre de archivo, fmopenread) do
intentar
setLength (resultado, tamaño);
leer (puntero (resultado)^, tamaño);
finalmente
gratis;
fin;
fin;
// Guardar campo
comenzar
if (Opendialog1.execute) entonces
comenzar
sfilename: = Opendialog1.FileName;
adotable1.Edit;
adotable1.fieldbyName ('Visio'). Astring: = blobContentToString (nombre de archivo);
adotable1.post;
fin;
◇ [Delphi] Copie todos los archivos al portapapeles
Utiliza shlobj, activox, portnpbrd;
procedimiento tForm1.CopyToclipBrd (VAR FileName: String);
var
Fe: tFormatetc;
Medio: TSTGMedium;
Drop Files: PDROPFILES;
pFile: pchar;
comenzar
Fe.cfformat: = cf_hdrop;
Fe.dwaspect: = dvaspect_content;
Fe.tymed: = tymed_hglobal;
Medium.hglobal: = GlobalAlloc (gmem_share o gmem_zeroinit, sizeof (tdropfiles)+longitud (nombre de archivo) +1);
if medio.hglobal <> 0 entonces comienza
Medium.tymed: = tymed_hglobal;
Dropfiles: = Globallock (Medium.hglobal);
intentar
Dropfiles^.pfiles: = sizeOf (tdropfiles);
DropFiles^.fwide: = false;
longInt (pfile): = longInt (dropfiles)+sizeOf (tdropfiles);
StrpCopy (pFile, nombre de archivo);
Inc (pFile, longitud (nombre de archivo) +1);
pfile^: = #0;
finalmente
GlobalUnlock (mediano.hglobal);
fin;
Portapapeles.setashandle (cf_hdrop, mediana.hglobal);
fin;
fin;
◇ ◇ [Delphi] enumere los procesos de ejecución del sistema actual
usa tlhelp32;
procedimiento TForm1.Button1Click(Remitente: TObject);
var lppe: tprocessentry32;
encontrado: booleano;
Mano: Thandle;
comenzar
Hand: = CreateToolHelp32SnapShot (th32cs_snapall, 0);
encontrado: = Process32First (Hand, LPPE);
mientras que se encuentra hacer
comenzar
Listbox1.items.add (strpas (lppe.szexefile));
encontrado: = process32Next (Hand, LPPE);
fin;
fin;
◇ [Delphi] Cree una nueva tabla 2 basada en bdetable1
Tabla2: = ttable.create (nil);
intentar
Table2.databasename: = table1.databasename;
Table2.fielddefs.asign (table1.fielddefs);
Table2.indexdefs.assign (table1.indexdefs);
Table2.tableName: = 'new_table';
Table2.createTable ();
finalmente
Table2.free ();
fin;
◇ [Delphi] La mejor manera de entender la creación y referencia de DLL
// Mira la fuente DLL (archivo-> nueva-> dll) primero
Proyecto de biblioteca1;
usos
Sysutils, clases;
función addit (f: integer; s: entero): integer; export;
comenzar
makeasum: = f+s;
fin;
exportaciones
addit;
fin.
// llama (en tu proyecto)
implementación
función addit (f: integer; s: entero): integer; far; externo 'proyecto1'; // Declaración
{La llamada es Addit (2,4);
◇ [Delphi] lea dinámicamente el tamaño del programa en sí
función gesselfsize: integer;
var
F: archivo de bytes;
comenzar
FileMode: = 0;
asignarfile (F, Application.exename);
restablecer (f);
Resultado: = filesize (f); // La unidad es bytes
CloseFile (f);
fin;
◇ [Delphi] Leer información del BIOS
con memo1.lines lo hacen
comenzar
Agregar ('MainboardBiosName:'+^i+String (PChar (PTR ($ Fe061))));
Agregar ('MainboardBioscopyright:'+^i+String (PChar (PTR ($ Fe091))));
Agregar ('MaineBoardBiosDate:'+^i+String (Pchar (PTR ($ ffff5))));
Agregar ('MaineBoardBiosserialno:'+^i+String (PCHAR (PTR ($ FEC71))));
fin;
◇ [Delphi] Dynamicly Crear alias MSSQL
procedimiento TForm1.Button1Click(Remitente: TObject);
var mylist: tStringList;
comenzar
Mylist: = tStringList.create;
intentar
con mylist do
comenzar
Agregar ('nombre del servidor = 210.242.86.2');
Add ('name de base de datos = db');
Agregar ('nombre de usuario = sa');
fin;
Session1.addalias ('testSql', 'mssql', mylist);
Sesión1.SaveconFigFile;
finalmente
MyList.Free;
Sesión1.active: = true;
Base de datos1.databasename: = 'db';
Base de datos1.aliasname: = 'testSql';
Base de datos1.loginprompt: = false;
Base de datos1.params.add ('nombre de usuario = sa');
Base de datos1.params.add ('contraseña =');
Base de datos1.connected: = true;
fin;
fin;
procedimiento TForm1.Button2Click (Remitente: TObject);
comenzar
Base de datos1.connected: = false;
Session1.deletealias ('testSql');
fin;
◇ [Delphi] Reproducir música de fondo
MMSSYSTEM USE
//Tocar música
McIsendString ('Open E: /1.Mid Tipo de secuenciador alias nn', '', 0, 0);
McIsendString ('Play nn from 0', '', 0, 0);
McIsendString ('Close Animation', '', 0, 0);
fin;
// deja de jugar
McIsendString ('Open E: /1.Mid Tipo de secuenciador alias nn', '', 0, 0);
McIsendString ('Stop nn', '', 0, 0);
McIsendString ('Close Animation', '', 0, 0);
◇ [Delphi] Un código de muestra para interfaces y clases
Tipo {Declaración de interfaz y clase: la diferencia es que los miembros de los datos, los métodos no públicos y los métodos públicos no usan la palabra clave pública en la interfaz}
ISample = interfaz // Define ISample Interface
función getString: string;
fin;
Tsample = class (tinterfacedObject, es muestra)
público
función getString: string;
fin;
// Definición de funciones
función tsample.getString: string;
comenzar
Resultado: = '¿Qué es el espectáculo';
fin;
// Objeto de clase de llamada
muestra var: tsample;
comenzar
muestra: = tsample.create;
showMessage (sample.getString+'Class Object!');
muestra. libre;
fin;
// interfaz de llamada
VAR Sample Interface: isample;
Muestra: Tsample;
comenzar
muestra: = tsample.create;
sampleinterface: = sample; // La implementación de la interfaz debe usar clase
{Las dos líneas anteriores también se pueden expresar como Interface Sample: = tsample.create;}
showMessage (sampleinterface.getString+'interfaz!');
//sample.free; (Clases locales de unas similares, las clases en la interfaz se liberan automáticamente}
sampleinterface: = nil; {Objeto de interfaz de liberación}
fin;
◇ [Delphi] La barra de tareas no parece un programa apropiado
var
Extendedstyle: Integer;
comenzar
Aplicación.initialize;
ExtendedStyle: = getWinDowlong (Application.Handle, GWL_EXSTYLE);
Setwindowlong (Application.Handle, GWL_EXSTYLE, ExtendedStyle o WS_EX_ToolWindow y no ws_ex_appwindow);
Aplicación.CreateForm(TForm1, Form1);
Aplicación.Ejecutar;
fin.
◇ [Delphi] Alt+Ctrl+Del no puede ver el programa
Agregar declaración después de la implementación:
function RegisterServiceProcess (dwprocessid, dwtype: integer): integer;
RegisterServiceProcess (GetCurrentProcessid, 1); // Ocultar
RegisterServiceProcess (GetCurrentProcessid, 0); // Display
◇ [Delphi] Detectar símbolo de unidad óptica
Var Drive: Char;
cdromid: entero;
comenzar
para la unidad: = 'd' a 'z' do
comenzar
cdromid: = getDriveType (pchar (unidad+':/'));
Si cdromid = 5 entonces showMessage ('su unidad CD-ROM es:'+unidad+'disco!');
fin;
fin;
◇ [Delphi] Detectar tarjeta de sonido
Si auxgetNumdevs () <= 0 entonces showMessage ('¡No se encontró una tarjeta de sonido!') Else ShowMessage ('¡Cualquier tarjeta de sonido encontrada!');
◇ [Delphi] Dibuje en la cuadrícula de cadenas
Evento StringGrid.ondrawcell
con stringGrid1.canvas do
Dibujar (rect.left, rect.top, image1.picture.graphic);
◇ [SQL Server] Otra forma de escribir la declaración similar en SQL
Por ejemplo, para encontrar a todos los usuarios cuyo nombre de usuario contiene "C", puede usar
Usa MyDatabase
Seleccione * de la Tabla1 donde el nombre de usuario como '%C%"
Aquí hay otra forma de completar la función anterior:
Usa MyDatabase
Seleccione * de la Tabla1 donde charindex ('c', nombre de usuario)> 0
En teoría, este método tiene una declaración de juicio más que el método anterior, es decir,> 0, pero este proceso de juicio es el más rápido.
Para String y otras operaciones, no es un gran problema usar la función Charindex.
Los caracteres encontrados se pueden usar directamente en este charindex, de la siguiente manera:
Usa MyDatabase
Seleccione * de la Tabla1 donde Charindex ('%', nombre de usuario)> 0
También se puede escribir como:
Usa MyDatabase
Seleccione * de la Tabla1 donde Charindex (char (37), nombre de usuario)> 0
El carácter ASCII es %
◇ [Delphi] SQL muestra múltiples bases de datos/tablas
Selecto distinto A.bianhao, A.xingming, B.Gongzi de "jianjie.dbf" a ", gongzi.dbf" b
Donde a.bianhao = b.bianhao
◇ [Delphi] RFC (solicitud de comentarios) Relacionado
IETF (Grupo de tarea de ingeniería de Internet) mantiene documentos de RFC http://www.ietf.cnri.reston.va.us
RFC882: Estructura del encabezado de mensajes
RFC1521: MIME Parte 1, Método de transmisión de mensajes
RFC1945: Documentación de transferencia de documentos multimedia
◇ [Delphi] Uso del tnmuupprocessor
Var InSteam, Outstream: tfilErtream;
comenzar
InSteam: = tfilErtream.create (infile.txt, fMopenRead);
Outstream: = tfilEnstream (outFile.txt, fmCreate);
Nmuue.method: = uucode; {uuencode/decode}
//Nmuue.method:=uumime; (Mime}
Nmuue.inputStream: = InSteam;
Nmuue.outputStream: = outstream;
Nmuue.encode; {procesamiento de codificación}
//Nmuue.decode; (Decoding Processing}
Insteam.Free;
Outstream.free;
fin;
◇ [Delphi] TFILESTREAM OPERACIÓN
// leer bytes de conteo desde la posición actual de la secuencia de archivo al búfer del búfer
function read (var buffer; Count: longint): longInt; anular;
// lee el búfer del búfer en la transmisión del archivo
function write (const buffer; cuenta: longint): longint; anular;
// Establecer el puntero actual de lectura y escritura de la transmisión del archivo en compensación
Función Seek (Offset: Longint; Origin: Word): Longint; anular;
origen = {Sofrombeginning, Sofrom -Current, Sofromend}
// Copiar recuento desde la posición actual en otra secuencia de archivo a la posición actual en la transmisión de archivo actual
función copyFrom (fuente: tstream; cuenta: longint): longInt;
// Lea el archivo especificado en la transmisión del archivo
var myfStream: tfilErtream;
comenzar
myfstream: = tfilErteam.create (opendialog1.filename, fMopenRead);
fin;
[JavaScript] Verifique si está instalado IE Plug-in Shockwave y Quicktime
<script language = "javaScript">
var myplugin = navigator.plugins ["Shockwave"];
if (myplugin)
document.writeln ("¡Has instalado Shockwave!")
demás
document.writeln ("¡No has instalado Shockwave!")
</script> <br>
<script language = "javaScript">
var myplugin = navigator.plugins ["Quicktime"];
if (myplugin)
document.writeLn ("¡Tiene QuickTime instalado!")
demás
document.writeln ("¡No ha instalado QuickTime!")
</script>
[Internet] El efecto de hacer referencia a iframe en la tabla
<TABLE CELLPADDING = "0" CellSpacing = "0">
<tr>
<TD> <ILAYER ID = "AD1" Visibility = "Hidden"> </ilayer> <nolayer> <iframe src = "i: /jinhtml/zj/h21.htm" marginwidth = "0" marginheight = "110" hspace = "10" vspace = "20" FrameBorDer = "0" Scrolling = "1"> </frame> </nolayer> </td>
</tr>
</tabla>
◇ Habilidades de control de WebBrowser [Delphi]
1. Realizar la función de impresión
Var Vain, Vaout: Olevariant;
Webbrowser.controlinterface.execwb (olecmdid_print, olecmdexecopt_dontpromptuser, vain, vaout);
2. WebBrowser lee la página de la transmisión
función tform1.loadFromStream (const AreSmream: tstream): hResult;
comenzar
Astream.seek (0, 0);
Resultado: = (webbrowser1.document como ipersiststreaminit) .load (tstreamAdapter.create (Astream));
fin;
3. "Acerca de:" El protocolo le permitirá navegar a una cadena HTML:
procedimiento tform1.loadhtmlString (shtml: string);
banderas var, TargetFramename, PostData, encabezados: Olevariant;
Webbrowser1.navigate ('Acerca de:' + shtml, flags, targetframename, postdata, encabezados)
4. "Res:" El protocolo le permitirá navegar a un archivo HTML almacenado como un recurso está disponible en el sitio de Microsoft:
procedimiento tform1.loadhtmlResource;
banderas var, TargetFramename, PostData, encabezados: Olevariant;
Webbrowser1.navigate ('res: //' + application.exename + '/myhtml', flags, targetframename, postdata, encabezados)
Use BRCC32.exe para crear archivos de recursos (*.RC)
Myhtml 23 "./html/myhtml.htm"
Morehtml 23 "./html/morehtml.htm"
{$ R html.res} //html.rc se compila en html.res
5. Guardar archivo HTML completo
var
HtmlDocument: ihtmlDocument2;
PersistFile: ipersistfile;
comenzar
HtmlDocument: = webbrowser1.document como ihtmlDocument2;
Persistfile: = htmlDocument como ipersistfile;
Persistfile.save (stringToolestr ('test.htm'), true);
mientras que htmlDocument.readyState <> 'Complete' do
Aplicación. ProcessMessages;
fin;
◇ [Delphi] Instale el control de WebBrowser (control de IE integrado)
Primero debe asegurarse de que el sistema tenga Internet Explorer 4 o posterior instalado, el menú Delphi-Componente-Importe ActiveX Control, seleccione Controles de Internet de Microsoft "En la lista y agregar a un archivo de paquete existente, el control de WebBrowser se mostrará en El panel de control ActiveX.
◇ [Delphi] Implementar el formulario translúcido de Windows2000
función setLayerDwindowattributes (hwnd: hwnd; crkey: longint; balpha: byte; dwflags: longint): longint;
procedimiento TForm1.FormCreate(Remitente: TObject);
Var L: Longint;
comenzar
l: = getwindowlong (manejar, gwl_exstyle);
l: = l o $ 80000;
Setwindowlong (mango, gwl_exstyle, l);
Setlayeredwindowattributes (mango, 0, 180, 2);
fin;
◇ [Delphi] El programa muestra imágenes de carga web publicitaria que carga
bandera var, marco, pdata, encabezado: olevariante;
comenzar
Webbrowser1.navigate ('http://www.chineseall.com/images/logo.jpg', flag, marco, pdata, encabezado)
fin;
◇ [Delphi] Calcule el tamaño de un directorio
función getDirectorySize (const adirectory: string): integer;
var
Dir: TSearchRec;
Ret: entero;
Ruta: cadena;
comenzar
Resultado := 0;
Ruta: = ExtractFilePath (adirectorio);
Ret: = sysutils.findfirst (adirectorio, faanyfile, dir);
Si ret <> no_error entonces
salida;
intentar
mientras que ret = no_error do
comenzar
Inc (resultado, dir.size);
// Si es un directorio y no es '.
if (dir.attr en [fadirectory]) y (dir.name [1] <> '.') Entonces
Inc (resultado, getDirectorySize (ruta + dir.name + '/*.*'));
Ret: = sysutils.findNext (Dir);
fin;
finalmente
Sysutils.findclose (dir);
fin;
fin;
◇ [Delphi] Borrar un directorio
función vacíaDirectory (thedirectory: string; recursiva: boolean):
Booleano;
var
SearchRec: tsearchRec;
Res: entero;
comenzar
Resultado: = falso;
Thedirectory: = NormalDir (thedirectory);
Res: = findFirst (Thedirectory + '*.*', Faanyfile, searchRec);
intentar
mientras que res = 0 do
comenzar
if (searchRec.name <> '.') y (searchRec.name <> '..') entonces
comenzar
if ((searchRec.Attr y Fadirectory)> 0) y recursivo
Entonces comienza
VacíaDirectory (Thedirectory + SearchRec.name, verdadero);
Eliminairectory (pChar (thedirectory + searchRec.name));
fin
si no, empezar
Deletefile (pChar (thedirectory + searchRec.name))
fin;
fin;
Res: = findNext (SearchRec);
fin;
Resultado := Verdadero;
finalmente
FindClose (SearchRec.FindHandle);
fin;
fin;
◇ [Delphi] Publicar el programa ADO e instalar ADO
Ejecute mdac_typ.exe una vez.
El directorio después de la instalación del programa es el mismo que la ruta de directorio establecida en el programa. está instalado.
◇ [Delphi] Interception of Windows System Menses: Wm_Close Mensaje
procedimiento wmclose (var msg: tmessage); mensaje wm_close;
procedimiento tmainform.wmclose (var msg: tMessage);
comenzar
M_BCLOSEBLEY: = false;
heredado;
fin;