Les compétences de développement de base de DELPHI de nos ancêtres
Compilation : Locataires Source : Monopoly Forum
◇[DELPHI] Copier des fichiers depuis le Voisinage Réseau
utilise du shellapi;
copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);
◇[DELPHI] produit un effet de glissement de la souris
Implémenté via l'événement MouseMove, l'événement DragOver, l'événement EndDrag, tel que LABEL sur PANEL :
var xpanel,ypanel,xlabel,ylabel:entier;
Événement MouseMove de PANEL : xpanel:=x;ypanel:=y;
Événement DragOver de PANEL : xpanel:=x;ypanel:=y;
Événement MouseMove de LABEL : xlabel:=x;ylabel:=y;
Événement EndDrag de LABEL : label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] Obtenir le répertoire WINDOWS
utilise du shellapi;
var windir:array[0..255] de char ;
getwindowsdirectory(windir,sizeof(windir));
Ou lisez dans le registre, emplacement :
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion
Clé SystemRoot, obtenue sous la forme : C:/WINDOWS
◇[DELPHI] Tracez des lignes sur FORM ou d'autres conteneurs
var x,y:tableau [0..50] d'entier ;
toile.pen.color:=clred;
toile.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇ Utilisation de la liste de chaînes [DELPHI]
var conseils:tstringlist;
conseils :=tstringlist.create ;
tips.loadfromfile('filename.txt');
edit1.text:=tips[0];
tips.add('chaîne d'ajout de dernière ligne');
tips.insert(1,'insérer une chaîne à la ligne NO 2');
tips.savetofile('newfile.txt');
conseils gratuits ;
◇[DELPHI]Opération simple dans le presse-papiers
richedit1.selectall;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
edit1.pastefromclipboard;
◇[DELPHI] À propos des opérations sur les fichiers et les répertoires
Chdir('c:/abcdir');Aller au répertoire
Mkdir('dirname');Créer un répertoire
Rmdir('nom_répertoire'); supprimer le répertoire
GetCurrentDir;//Obtenir le nom du répertoire actuel, sans '/'
Getdir(0,s);//Obtenir le nom du répertoire de travail s:='c:/abcdir';
Supprimer le fichier('abc.txt');//Supprimer le fichier
Renamefile('old.txt','new.txt');//Renommer le fichier
ExtractFilename(filelistbox1.filename);//Obtenir le nom du fichier
ExtractFileExt(filelistbox1.filename);//Obtenir le suffixe du fichier
◇[DELPHI] Attributs du fichier de processus
attr:=filegetattr(filelistbox1.filename);
if (attr et faReadonly)=faReadonly then ... //lecture seule
if (attr et faSysfile)=faSysfile then ... //système
if (attr et faArchive)=faArchive then ... //Archive
if (attr et faHidden)=faHidden then ... //Masquer
◇[DELPHI]Exécuter des fichiers en dehors du programme
WINEXEC//Appel du fichier exécutable
winexec('command.com /c copy *.* c:/',SW_Normal);
winexec('start abc.txt');
ShellExecute ou ShellExecuteEx//Démarrer le programme d'association de fichiers
functionexecutefile(const filename,params,defaultDir:string;showCmd:integer):THandle;
ExecuteFile('C:/abc/a.txt','x.abc','c:/abc/',0);
ExecuteFile('http://tingweb.yeah.net','','',0);
ExecuteFile('mailto:[email protected]','','',0);
◇[DELPHI] Obtenez le nom du processus en cours d'exécution sur le système
var hCurrentWindow:HWnd;szText:array[0..254] de char;
commencer
hCurrentWindow:=Getwindow(handle,GW_HWndFrist);
tandis que hCurrentWindow <> 0 fait
commencer
si Getwindowtext(hcurrnetwindow,@sztext,255)>0 alors listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
fin;
fin;
◇[DELPHI]À propos de l'intégration de l'assembly
Fin de l'Asme ;
EAX, ECX et EDX peuvent être modifiés à volonté ; ESI, EDI, ESP, EBP et EBX ne peuvent pas être modifiés.
◇[DELPHI]À propos de la fonction de conversion de type
FloatToStr // Point flottant vers une chaîne
FloatToStrF // Virgule flottante formatée en chaîne
IntToHex//Entier en hexadécimal
HeureVersStr
DateVersStr
DateHeureVersStr
FmtStr//Sortie d'une chaîne au format spécifié
FormatDateTime('AAAA-MM-JJ,hh-mm-ss',DATE);
◇[DELPHI]Procédures et fonctions de chaînes
Insert(obj,target,pos);//La chaîne cible est insérée à la position de pos. Si le résultat de l'insertion est supérieur à la longueur maximale de la cible, les caractères en excès seront tronqués. Si Pos est en dehors de 255, une erreur d’exécution se produira. Par exemple, st:='Brian', puis Insert('OK',st,2) fera que st devienne 'BrOKian'.
Supprimer(st,pos,Num);//Supprimer une sous-chaîne de caractères Num (entier) à partir de la position pos (entier) dans la st chaîne. Par exemple, st:='Brian', alors Delete(st,3,2) deviendra Brn.
Str(value,st);//Convertissez la valeur numérique (type entier ou réel) en chaîne et mettez-la dans st. Par exemple, lorsque a=2.5E4, str(a:10,st) fera que la valeur de st sera « 25 000 ».
Val(st,var,code);//Convertissez l'expression de chaîne st en la valeur entière ou réelle correspondante et stockez-la dans var. St doit être une chaîne représentant une valeur numérique et conforme aux règles relatives aux constantes numériques. Pendant le processus de conversion, si aucune erreur n'est détectée, le code variable est mis à 0, sinon il est mis à la position du premier caractère d'erreur. Par exemple, st:=25.4E3, x est une variable réelle, alors val(st,x,code) donnera à la valeur X 25400 et à la valeur du code 0.
Copy(st.pos.num);//Renvoie une sous-chaîne commençant à la position pos (entier) dans la st chaîne et contenant des caractères num (entier). Si pos est supérieur à la longueur de la st chaîne, une chaîne vide sera renvoyée. Si pos est en dehors de 255, une erreur d'exécution se produira. Par exemple, st:='Brian', puis Copy(st,2,2) renvoie 'ri'.
Concat(st1,st2,st3...,stn);//Concatène les chaînes représentées par toutes les variables indépendantes dans l'ordre indiqué et renvoie la valeur concaténée. Si la longueur du résultat est de 255, une erreur d'exécution se produira. Par exemple, st1:='Brian',st2:=' ',st3:='Wilfred', puis Concat(st1,st2,st3) renvoie 'Brian Wilfred'.
Longueur(st);//Renvoie la longueur de l'expression de chaîne st. Par exemple, st:='Brian', la valeur de retour de Longueur(st) est 5.
Pos(obj,target);//Renvoie la position où la chaîne obj apparaît pour la première fois dans la chaîne cible target Si target n'a pas de chaîne correspondante, la valeur de retour de la fonction Pos est 0. Par exemple, target:='Brian Wilfred', alors la valeur de retour de Pos('Wil',target) est 7 et la valeur de retour de Pos('hurbet',target) est 0.
◇[DELPHI]À propos de la gestion du registre
utilise le registre ;
var reg:Tregistre;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('Panneau de configuration/Bureau',false);
reg.WriteString('Titre Fond d'écran','0');
reg.writeString('Wallpaper',filelistbox1.filename);
reg.closereg;
reg.gratuit;
◇[DELPHI]À propos des noms de constantes du clavier
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_ESPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12:70$(112)--7 milliards$(123)
AZ : 41 $ (65) - 5A $ (90)
0-9:30$(48)--39$(57)
◇[DELPHI] Déterminer au préalable la langue maternelle du programme
Invite DOS du logiciel DELPHI : ce programme doit être exécuté sous Win32.
Invite DOS pour le logiciel VC++ : ce programme ne peut pas être exécuté en mode DOS.
◇[DELPHI]Cookies de fonctionnement
réponse.cookies("nom").domain:='http://www.086net.com';
avec réponse.cookies.add faire
commencer
name:='nom d'utilisateur';
value:='nom d'utilisateur';
fin
◇[DELPHI] ajouté au lien du menu du document
utilise shellapi, shlOBJ ;
shAddToRecentDocs(shArd_path,pchar(filepath));//Ajouter une connexion
shAddToRecentDocs(shArd_path,nil);//Effacer
◇[Divers] Sauvegarde du dictionnaire de méthode de saisie ABC intelligente
windows/système/utilisateur.rem
windows/système/tmmr.rem
◇[DELPHI] Déterminer les boutons de la souris
if GetAsyncKeyState(VK_LButton)<>0 then ... //Bouton gauche
if GetAsyncKeyState(VK_MButton)<>0 then ... //touche du milieu
si GetAsyncKeyState(VK_RButton)<>0 alors ... //clic droit
◇[DELPHI]Définir l'affichage maximum du formulaire
événement onFormCreate
self.width:=écran.width;
self.hauteur:=écran.hauteur;
◇ Bouton [DELPHI] pour accepter les messages
Traité dans l'événement OnCreate : application.OnMessage:=MyOnMessage ;
procédure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
commencer
si msg.message=256 alors ... //ANY key
si msg.message=112 alors ... //F1
si msg.message=113 alors ... //F2
fin;
◇[Divers]Masquer les dossiers partagés
Effet de partage : accessible, mais invisible (dans la gestion des ressources, Voisinage réseau)
Nommez le partage : direction$
Visite : //ordinateur/direction/
◇[Java Script] Effets couramment utilisés sur les pages Web Java Script
La page Web devrait se fermer dans 60 secondes
<script langage="java script"><!--
settimeout('window.close();',60000)
--></script>
fermer la fenêtre
<a href="/" onclick="Javascript:window.close();return false;">Fermer</a>
Transfert d'URL programmé
<méta http-equiv="refresh" content="40;url=http://www.086net.com">
Définir comme page d'accueil
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">Définir comme page d'accueil</a>
Ajouter ce site à vos favoris
<a href="javascript:window.external.addfavorite('http://086net.com','[无名pier]')">Mettez ce site en favori</a>
Rejoindre la chaîne
<a href="javascript:window.external.addchannel('http://086net.com')">Ajouter une chaîne</a>
◇[DELPHI]Édition de texte liée
checkbox1.checked:=pas checkbox1.checked;
si checkbox1.coché alors richedit1.font.style:=richedit1.font.style+[fsBold] sinon richedit1.font.style:=richedit1.font.style-[fsBold]//bold
si checkbox1.coché alors richedit1.font.style:=richedit1.font.style+[fsItalic] sinon richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
si checkbox1.coché alors richedit1.font.style:=richedit1.font.style+[fsUnderline] sinon richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//Gauche
memo1.alignment:=taRightJustify;//right
memo1.alignment:=taCenter;//Centré
◇[DELPHI] Générer aléatoirement la couleur du texte
randomiser ;//graine aléatoire
memo1.font.color:=rgb(random(255),random(255),random(255));
◇[DELPHI]Numéro de série du correctif de mise à niveau DELPHI5 UPDATE
1000003185
90X25fx0
◇[DELPHI] Filtrage de caractères illégal dans les noms de fichiers
pour i:=1 à longueur(s) faire
si s[i] dans ['/','/',':','*','?','<','>','|'] alors
◇[DELPHI]Définition et description de la fonction de conversion
datetimetofiledate (datetime:Tdatetime):longint; Convertit une valeur de date et d'heure au format Tdatetime en une valeur de date et d'heure au format DOS
datetimetostr (datetime:Tdatetime):string; Convertit la variable de format Tdatatime en chaîne Si le paramètre datetime ne contient pas de valeur de date, la date de chaîne renvoyée sera affichée sous la forme 00/00/00. le paramètre datetime, la chaîne renvoyée sera La partie heure s'affiche comme 00:00:00 AM
datetimetostring (var chaîne de résultat ;
format const : chaîne ;
datetime:Tdatetime); Convertir les valeurs d'heure et de date en fonction de la chaîne de format donnée, le résultat est la chaîne de résultat, le format est la chaîne de format de conversion, datetime est la valeur de date et d'heure
datetostr (date:Tdatetime) utilise la chaîne de format définie par la variable globale shortdateformat pour convertir le paramètre date en chaîne correspondante
floattodecimal (var résultat : Tfloatrec ; valeur :
étendu;précision,décimales:
entier); Convertir un nombre à virgule flottante en représentation décimale
floattostr (value:extended):string Convertit la valeur à virgule flottante au format chaîne. Cette conversion utilise le format numérique ordinaire et le nombre effectif de chiffres convertis est de 15.
floattotext (tampon:pchar;valeur:extended;
format:Tfloatformat;précision,
digits:integer):integer; Utilisez le format, la précision et le nombre décimal donnés pour convertir la valeur à virgule flottante en représentation décimale. Le résultat de la conversion est stocké dans le paramètre buffer. Le tampon n’est pas un tampon de chaîne de résultat 0.
floattotextfmt (tampon:pchar;valeur:extended;
format:pchar):integer Utilisez le format donné pour convertir la valeur à virgule flottante en représentation décimale. Le résultat de la conversion est stocké dans le paramètre buffer. La valeur de retour de la fonction est le nombre de caractères stockés dans le tampon.
inttohex (valeur : entier long ; chiffres : entier) :
string ; Convertit la valeur numérique donnée en une chaîne hexadécimale. Le paramètre digits donne le nombre de chiffres contenus dans la chaîne de résultat de la conversion.
inttostr (value:longint):string convertit un entier en chaîne décimale
strtodate (const S:string):Tdatetime Convertit une chaîne en valeur de date. S doit contenir une chaîne de date au format légal.
strtodatetime (const S:string):Tdatetime Convertit la chaîne S au format date/heure, S doit avoir le format MM/JJ/AA HH:MM:SS[AM|PM], où les séparateurs de date et d'heure sont les mêmes que la période du système constante de temps Paramètre lié. Si aucune information AM ou PM n'est spécifiée, l'horloge de 24 heures est utilisée.
strtofloat (const S:string):extended; Convertit la chaîne donnée en un nombre à virgule flottante La chaîne a le format suivant :
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint Convertit une chaîne numérique en entier. La chaîne peut être au format décimal ou hexadécimal. Si la chaîne n'est pas une chaîne numérique légale, le système générera une exception ECONVERTERROR.
strtointdef (const S:string;par défaut :
longint):longint; Convertit la chaîne S en nombre. Si S ne peut pas être converti en nombre, la fonction strtointdef renvoie la valeur du paramètre par défaut.
strtotime (const S:string):Tdatetime Convertit la chaîne S en une valeur TDATETIME S a le format HH:MM:SS[AM|PM].
timetostr (time:Tdatetime):string; Convertit le paramètre TIME en chaîne. Le format de la chaîne de résultat de la conversion est lié au réglage des constantes temporelles du système.
◇ Le programme [DELPHI] n'apparaît pas dans ALT+CTRL+DEL
Ajouter une déclaration après l'implémentation :
fonction RegisterServiceProcess (dwProcessID, dwType : Integer) : Integer stdcall externe 'KERNEL32.DLL' ;
RegisterServiceProcess (GetCurrentProcessID, 1); // Masquer
RegisterServiceProcess (GetCurrentProcessID, 0);//Affichage
Invisible avec ALT+DEL+CTRL
◇ Le programme [DELPHI] n'apparaît pas dans la barre des tâches
utilise Windows
var
ExtendedStyle : Entier ;
commencer
Application.Initialiser ;
//================================================= ==============
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle OU WS_EX_TOOLWINDOW
ET NON WS_EX_APPWINDOW);
//================================================= ===============
Application.CreateForm(TForm1, Form1);
Application.Exécuter ;
fin.
◇[DELPHI]Comment déterminer si le réseau commuté est activé ou désactivé
si GetSystemMetrics(SM_NETWORK) ET $01 = $01 alors
showmessage('En ligne !')
else showmessage('Pas en ligne !');
◇[DELPHI]Convertir l'IP en nom de domaine
fonction GetDomainName(Ip:string):string;
var
pH : PHostent ;
données : twsadata ;
ii:dMot;
commencer
WSAStartup ($101, données);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr (@ii,sizeof(ii),PF_INET);
si (ph<>nil) alors
résultat :=pH.h_name
autre
résultat:='';
WSANettoyage ;
fin;
◇[DELPHI] Comment gérer le "menu contextuel"
var
reg : TRegistre ;
commencer
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', true);
reg.WriteString('', '"' + application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', false);
reg.WriteString('', 'Opération(&C)');
reg.CloseKey;
reg.Gratuit ;
showmessage('TERMINÉ !');
fin;
◇[DELPHI]Envoyer la valeur de la clé virtuelle ctrl V
procédure sendpaste ;
commencer
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 lettre de lecteur du lecteur optique actuel
procédure getcdrom(var cd:char);
var
str:chaîne;
pilotes : entier ;
pilote:char;
je,temp:entier;
commencer
pilotes :=getlogicaldrives ;
temp:=(1 et pilotes);
pour i:=0 à 26 fais
commencer
si temp = 1 alors
commencer
pilote:=char(i+integer('a'));
str:=pilote+':';
si getdrivetype(pchar(str))=drive_cdrom alors
commencer
cd:=pilote ;
sortie;
fin;
fin;
pilotes:=(pilotes shr 1);
temp:=(1 et pilotes);
fin;
fin;
◇[DELPHI]Cryptage et décryptage des caractères
function cryptstr(const s:string; stype: dword):string;
var
je : entier ;
fkey : entier ;
commencer
résultat:='';
type de cas de
0 : setpass ;
commencer
randomiser;
fkey := aléatoire($ff);
pour i:=1 à longueur(s) faire
résultat := résultat+chr( ord(s[i]) xor i xor fkey);
résultat := résultat + char(fkey);
fin;
1 : obtenir le laissez-passer
commencer
fkey := ord(s[longueur(s)]);
pour i:=1 à longueur(s) - 1 faire
résultat := résultat+chr( ord(s[i]) xor i xor fkey);
fin;
fin;
□◇[DELPHI] Envoyer des clés simulées à d'autres applications
var
h:TPoignée ;
commencer
h := FindWindow(nil, 'Titre de l'application');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//Envoyer la touche F9
fin;
□◇[DELPHI] Format de données DAO pris en charge par 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);//Champ d'incrémentation automatique
□◇[DELPHI]DELPHI configure les étapes MS SQL 7 et BDE
La première étape consiste à configurer ODBC :
Configurez d'abord la source de données dans ODBC. Après avoir installé SQL Server7.0, il devrait y avoir deux éléments dans "System DSN" dans ODBC.
Sources de données, l'une est MQIS et l'autre est LocalSever. Sélectionnez-en une et cliquez sur le bouton de configuration. Je ne connais pas votre SQL7.0.
Est-il installé sur la machine locale ? Si oui, passez directement à l'étape suivante. Sinon, remplissez la colonne serveur.
Serveur, puis passez à l'étape suivante et remplissez l'ID de connexion et le mot de passe (l'ID de connexion et le mot de passe sont des options utilisateur dans SQL7.0
situé au centre).
La deuxième étape consiste à configurer BDE :
Ouvrez le BDE de Delphi et cliquez sur MQIS ou LocalServer. Vous serez invité à saisir un nom d'utilisateur et un mot de passe. C'est la même chose que.
Le nom d'utilisateur et le mot de passe ODBC sont les mêmes, il suffit de les remplir.
La troisième étape consiste à configurer le programme :
Si vous utilisez TTable, sélectionnez MQIS ou LocalServer dans le champ DatabaseName de TTable, puis
Sélectionnez simplement Vente dans TableName, puis remplacez Active par True. Delphi fera apparaître une boîte de dialogue d'invite et remplira l'utilisateur.
nom et mot de passe.
Si vous utilisez TQuery, faites un clic droit sur TQuery et cliquez sur "SQL Builder". Ceci est configuré en mode interface.
Instruction SQL, ou remplissez l'instruction SQL dans le SQL de TQuery. Enfin, n'oubliez pas de changer Active en True.
Il est également possible de configurer TQuery pendant le fonctionnement, voir l'aide de Delphi pour plus de détails.
□◇[DELPHI] Obtenez la valeur RVB d'un certain point de l'image
procédure TForm1.Image1MouseDown(Expéditeur : TObject ; Bouton : TMouseButton ;
Shift : TShiftState ; X, Y : entier );
var
rouge, vert, bleu : octet ;
je:entier;
commencer
je:= image1.Canvas.Pixels[x,y];
Bleu := GetBValue(i);
Vert := GetGValue(i) :
Rouge := GetRValue(i);
Label1.Caption:=inttostr(Rouge);
Label2.Caption:=inttostr(Vert);
Label3.Caption:=inttostr(Bleu);
fin;
□◇[DELPHI]À propos de la décomposition et de la conversion du format de date
var année, mois, jour : mot ; maintenant2 : Tdatatime ;
maintenant2:=date();
décodage (maintenant2,année,mois,jour);
lable1.Text :=inttostr(année)+'année'+inttostr(mois)+'mois'+inttostr(jour)+'jour';
◇[DELPHI]Comment déterminer le mode de connexion réseau actuel
Le résultat du jugement est le mode MODEM, LAN ou serveur proxy.
utilise Wininet ;
Fonction ConnectionKind :boolean;
var drapeaux : dword ;
commencer
Résultat := InternetGetConnectedState (@flags, 0);
si Résultat alors
commencer
si (drapeaux et INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM alors
commencer
showmessage('Modem');
fin;
si (drapeaux et INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN alors
commencer
showmessage('LAN');
fin;
si (drapeaux et INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY alors
commencer
showmessage('Proxy');
fin;
si (drapeaux et INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY alors
commencer
showmessage('Modem occupé');
fin;
fin;
fin;
◇[DELPHI]Comment déterminer si une chaîne est une adresse EMAIL valide
fonction IsEMail(EMail : String) : Booléen ;
var s : chaîne ; ETpos : entier ;
commencer
ETpos:= pos('@', EMail);
si ETpos > 1 alors
commencer
s:= copie(EMail,ETpos+1,Longueur(EMail));
si (pos('.', s) > 1) et (pos('.', s) < longueur(s)) alors
Résultat := vrai sinon Résultat := faux ;
fin
autre
Résultat := faux ;
fin;
◇[DELPHI] Déterminez si le système est connecté à INTERNET
La fonction InetIsOffline dans URL.DLL doit être introduite.
La déclaration de la fonction est :
fonction InetIsOffline (Drapeau : Integer) : Booléen ; appel standard ; URL.DLL ;
Ensuite, vous pouvez appeler la fonction pour déterminer si le système est connecté à INTERNET
si InetIsOffline(0) alors ShowMessage('non connecté !')
else ShowMessage('connecté!');
Cette fonction renvoie TRUE si le système local n'est pas connecté à INTERNET.
Ci-joint:
La plupart des systèmes avec IE ou OFFICE97 ont cette DLL disponible pour l'appel.
InetIsHors ligne
BOOL InetIsOffline(
DWORD dwFlags,
);
◇[DELPHI] Lisez et mettez facilement en pause les fichiers WAV
utilise le système mm ;
fonction PlayWav (const FileName : string) : booléen ;
commencer
Résultat := PlaySound(PChar(FileName), 0, SND_ASYNC);
fin;
procédure StopWav ;
var
tampon : tableau[0..2] de caractères ;
commencer
tampon[0] := #0;
PlaySound (tampon, 0, SND_PURGE);
fin;
◇[DELPHI] Obtenir des informations sur le BIOS de la machine
avec Memo1.Lines faire
commencer
Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Ajouter('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
fin;
◇[DELPHI] Téléchargez des fichiers depuis Internet
utilise UrlMon ;
fonction DownloadFile (Source, Dest : chaîne) : Booléen ;
commencer
essayer
Résultat := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
sauf
Résultat := Faux ;
fin;
fin;
si DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') alors
ShowMessage('Téléchargement réussi')
else ShowMessage('Téléchargement échoué')
◇[DELPHI]Résoudre l'adresse IP du serveur
utilise Winsock
function IPAddrToName(IPAddr : String): Chaîne ;
var
SockAddrIn : TSockAddrIn ;
HôteEnt : PHostEnt ;
Données WSA : Données TWSA ;
commencer
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 alors result:=StrPas(Hostent^.h_name) else result:='';
fin;
◇[DELPHI] Obtenez la connexion dans le raccourci
function ExeFromLink(const linkname: string): chaîne;
var
FDir,
Nom,
ExeName : PChar ;
z : entier ;
commencer
ExeName := StrAlloc(MAX_PATH);
FName:= StrAlloc(MAX_PATH);
FDir:= StrAlloc(MAX_PATH);
StrPCopy(FName, ExtractFileName(linkname));
StrPCopy(FDir, ExtractFilePath(nom du lien));
z:= FindExecutable(FName, FDir, ExeName);
si z > 32 alors
Résultat := StrPas (ExeName)
autre
Résultat := '';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
fin;
◇[DELPHI]Contrôler l'achèvement automatique de TCombobox
{Propriété 'Sorted' du TCombobox sur true }
var lastKey : Word ; //variable globale
//Événement OnChange de TCombobox
procédure TForm1.AutoCompleteChange(Sender: TObject);
var
SearchStr : chaîne ;
retVal : entier ;
commencer
SearchStr := (Expéditeur en tant que TCombobox).Text;
si lastKey <> VK_BACK alors // retour arrière : VK_BACK ou $08
commencer
retVal := (Expéditeur en tant que TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
si retVal > CB_Err alors
commencer
(Expéditeur en tant que TCombobox).ItemIndex := retVal;
(Expéditeur en tant que TCombobox).SelStart := Longueur(SearchStr);
(Expéditeur en tant que TCombobox).SelLength :=
(Longueur((Expéditeur en tant que TCombobox).Text) - Longueur(SearchStr));
fin ; // retVal > CB_Err
fin ; // dernièreClé <> VK_BACK
dernièreClé := 0; // réinitialiser la dernièreClé
fin;
//Événement OnKeyDown de TCombobox
procédure TForm1.AutoCompleteKeyDown(Expéditeur : TObject ; var Clé : Word ;
Maj : TShiftState);
commencer
lastKey := Clé ;
fin;
◇[DELPHI]Comment effacer un répertoire
fonction EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :
booléen ;
var
SearchRec : TSearchRec ;
Res : Entier ;
commencer
Résultat := Faux ;
LeRépertoire := NormalDir(LeRépertoire);
Res := FindFirst (TheDirectory + '*.*', faAnyFile, SearchRec);
essayer
tandis que Res = 0 fais
commencer
si (SearchRec.Name <> '.') et (SearchRec.Name <> '..') alors
commencer
if ((SearchRec.Attr et faDirectory) > 0) et récursif
puis commence
EmptyDirectory (TheDirectory + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
fin
sinon commencer
Supprimer le fichier (PChar (TheDirectory + SearchRec.Name))
fin;
fin;
Res := FindNext(SearchRec);
fin;
Résultat := Vrai ;
enfin
FindClose(SearchRec.FindHandle);
fin;
fin;
◇[DELPHI]Comment calculer la taille d'un répertoire
function GetDirectorySize(const ADirectory : string) : Integer ;
var
Rép : TSearchRec ;
Ret : entier ;
Chemin : chaîne ;
commencer
Résultat := 0;
Chemin := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
si Ret <> NO_ERROR alors quittez ;
essayer
tandis que ret=NO_ERROR fait
commencer
inc(Résultat, Dir.Taille);
if (Dir.Attr in [faDirectory]) et (Dir.Name[1] <> '.') alors
Inc(Résultat, GetDirectorySize(Chemin + Dir.Name + '/*.*'));
Ret := Sysutils.FindNext(Dir);
fin;
enfin
Sysutils.FindClose(Dir);
fin;
fin;
◇[DELPHI]Comment ajouter le programme d'installation à la liste de désinstallation
Exécutez le registre comme suit :
1. Créez une clé primaire sous la clé HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall avec n'importe quel nom.
ExempleHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. Saisissez deux valeurs de chaîne sous HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall.
Les noms de ces deux valeurs de chaîne sont spécifiques : DisplayName et UninstallString.
3. Attribuez la valeur de la chaîne DisplayName au nom affiché dans la « Liste des applications supprimées », tel que « Aiming Uninstall one » ;
Attribuez la chaîne UninstallString à la commande de suppression exécutée, telle que C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"
◇[DELPHI]Message d'arrêt de session WM_QUERYENDintercepté
taper
TForm1 = classe(TForm)
procédure WMQueryEndSession(var Message : TWMQueryEndSession); message WM_QUERYENDSESSION ;
procédure CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;
privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
procédure TForm1.WMQueryEndSession(var Message : TWMQueryEndSession);
commencer
Showmessage('l'ordinateur est sur le point de s'éteindre');
fin;
◇[DELPHI]Obtenez des voisins en ligne
la procédure getnethood();//NT est utilisée comme serveur et le débogage est passé sur WIN98.
var
a,i:entier;
code d'erreur : entier ;
netres:array[0..1023] de netresource ;
enumhandle: poignée;
énumérations:dword;
taille du tampon:dword;
s:chaîne;
mes éléments de liste : éléments de liste ;
malistitem:tlistitem;
alldomain:tstrings;
commencer //listcomputer est une vue de liste pour répertorier tous les ordinateurs ;controlcenter est un formulaire.
alldomain:=tstringlist.Create;
avec netres[0] commence
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomment :=nil;
lpprovider :=nil;
end; // Récupère tous les champs
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
si errcode=NO_ERROR alors commencez
énumérations :=1024 ;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
fin;
une :=0 ;
meslistitems :=controlcenter.lstcomputer.Items;
meslistitems.Clear;
while (string(netres[a].lpprovider)<>'') et (errcode=NO_ERROR) font
commencer
alldomain.Add (netres[a].lpremotename);
une:=une+1;
fin;
wnetcloseenum(enumhandle);
// Récupère tous les ordinateurs
meslistitems :=controlcenter.lstcomputer.Items;
meslistitems.Clear;
pour i:=0 à alldomain.Count-1 faire
commencer
avec netres[0] commence
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(alldomain[i]);
lpcomment :=nil;
lpprovider :=nil;
fin;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
si errcode=NO_ERROR alors
commencer
EnumEntries :=1024 ;
Taille du tampon :=TailleDe(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
fin;
une :=0 ;
while (string(netres[a].lpprovider)<>'') et (errcode=NO_ERROR) font
commencer
malistitem :=mylistitems.Add;
malistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
une:=une+1;
fin;
wnetcloseenum(enumhandle);
fin;
fin;
◇[DELPHI] Obtenez le répertoire partagé sur un certain ordinateur
procédure getsharefolder (const nom de l'ordinateur: chaîne);
var
code d'erreur,a:entier;
netres:array[0..1023] de netresource ;
enumhandle: poignée;
énumérations, taille du tampon: dword ;
s:chaîne;
mes éléments de liste : éléments de liste ;
malistitem:tlistitem;
meschaînes:tstringlist;
commencer
avec netres[0] commence
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(nom de l'ordinateur);
lpcomment :=nil;
lpprovider :=nil;
end; // Récupère le nœud racine
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
si errcode=NO_ERROR alors
commencer
EnumEntries :=1024 ;
Taille du tampon :=TailleDe(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
fin;
wnetcloseenum(enumhandle);
une :=0 ;
mylistitems:=controlcenter.lstfile.Items;
meslistitems.Clear;
while (string(netres[a].lpprovider)<>'') et (errcode=NO_ERROR) font
commencer
avec mylistitems faire
commencer
malistitem:=ajouter;
malistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
fin;
une:=une+1;
fin;
fin;
◇[DELPHI] Obtenez le numéro de série du disque dur
var SerialNum : pdword; a, b : dword; Buffer : tableau [0..255] de caractères ;
commencer
si GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) alors Label1.Caption := IntToStr(SerialNum^);
fin;
◇[DELPHI]MEMO tourne automatiquement les pages
Procédure ScrollMemo(Mémo : TMemo ; Direction : char);
commencer
direction du dossier
'd' : début
SendMessage (Memo.Handle, { HWND du contrôle Memo }
WM_VSCROLL, {Message Windows}
SB_PAGEDOWN, { Commande de défilement }
0) { Non utilisé }
fin;
'u' : commencer
SendMessage (Memo.Handle, { HWND du contrôle Memo }
WM_VSCROLL, {Message Windows}
SB_PAGEUP, { Commande de défilement }
0); { Non utilisé }
fin;
fin;
fin;
procédure TForm1.Button1Click(Expéditeur : TObject);
commencer
ScrollMemo(Memo1,'d'); //page précédente
fin;
procédure TForm1.Button1Click(Expéditeur : TObject);
commencer
ScrollMemo(Memo1,'u'); //Retourner la page
fin;
◇[DELPHI]Appuyez sur Entrée pour passer à la position suivante dans DBGrid (touche Tab)
procédure TForm1.DBGrid1KeyPress(Expéditeur : TObject ; var Clé : Char) ;
commencer
si Clé = #13 alors
si DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 alors
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
autre
commencer
Tableau1.next ;
DBGrid1.Columns[0].field.FocusControl;
fin;
fin;
◇[DELPHI]Comment installer le contrôle
Méthode d'installation :
1. Pour un seul contrôle, Composant-->installer le composant..-->Fichier PAS ou DCU-->installer
2. Pour les packages de contrôle avec des fichiers *.dpk, Fichier-->ouvrir (sélectionner *.dpk dans la zone de liste déroulante)-->installer.
3. Pour les packages de contrôle avec des fichiers *.dpl, Installer les packages-->Ajouter-->nom du fichier dpl.
4. Si le bouton Installer ci-dessus n'est pas valide, essayez le bouton Compiler.
5. S'il s'agit d'une bibliothèque d'exécution, ajoutez-la aux runtimepackes sous packages sous l'option.
S'il indique que le fichier est introuvable lors de la compilation, c'est généralement parce que le répertoire d'installation du contrôle ne se trouve pas dans le répertoire Lib de Delphi. Il existe deux méthodes pour résoudre le problème :
1. Copiez les fichiers d'installation d'origine dans le répertoire Lib de Delphi.
2. Ou ajoutez le chemin du code d'origine du contrôle au répertoire Delphi Lib dans Outils-->Options d'environnement.
◇[DELPHI] Supprimer complètement le répertoire (deltree)
procédure TForm1.DeleteDirectory(strDir:String);
var
sr : TSearchRec ;
FileAttrs : entier ;
strfilename:chaîne;
strPth : chaîne ;
commencer
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
si FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 alors
commencer
si (sr.Attr et FileAttrs) = sr.Attr alors
commencer
strfilename:=sr.Name;
si le fichier existe (strpth+'/'+strdir+'/'+strfilename) alors
deletefile(strpth+'/'+strdir+'/'+strfilename);
fin;
tandis que FindNext(sr) = 0 fais
commencer
si (sr.Attr et FileAttrs) = sr.Attr alors
commencer
strfilename:=sr.name;
si le fichier existe (strpth+'/'+strdir+'/'+strfilename) alors
deletefile(strpth+'/'+strdir+'/'+strfilename);
fin;
fin;
FindClose(sr);
suppriméir(strpth+'/'+strdir);
fin;
fin;
◇[DELPHI] Obtenez les informations de ligne et de colonne du curseur actuel du contrôle TMemo dans Tpoint
1.fonction ReadCursorPos(SourceMemo : TMemo) : TPoint ;
var Point : TPoint ;
commencer
point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
Résultat := Point;
fin;
2.LineLength:=SendMessage(memol.handle, EM—LINELENGTH, Cpos, 0 //Longueur de la ligne);
◇[DELPHI]Lire le numéro de série du disque dur
fonction GetDiskSerial(DiskChar: Char) : chaîne ;
var
SerialNum : pdword;
a, b : dword;
Tampon : tableau [0..255] de caractères ;
commencer
résultat := "";
Si getVolumeInformation (phar (diskchar + ": /"), tampon, sizeof (tampon), serialnum,
a, b, nil, 0) puis
Résultat: = inttoStr (serialnum ^);
fin;
◇ [Internet] Compétences complètes CSS communes
1. P: First-Letter {Font-Size: 300%; Float: Left} // La première lettre sera trois fois plus grande que la police normale.
2. <Link rel = Stylesheet href = "Basics.css" title = "Contemporary"> // Connectez une feuille de style externe
3. Incorporer une feuille de style
<Style type = "text / css" media = écran>
<!--
@Import URL (http://www.htmlhelp.com/style.css); // importe une feuille de style externe
@Import URL (/stylesheets/punk.css); // Identique à ci-dessus
Corps {arrière-plan: url (foo.gif) rouge;
.punk {Color: Lime; Background: # FF80C0} // Voir 5 pour référence.
# WDG97 {FONT-SIZE: plus grand} // Voir 6 pour les références.
-->
</ Style>
4. <P style = "Color: Red; Font-Family: 'New Century Schoolbook', Serif"> // Style en ligne
<Span style = "Font-Family: Arial"> Arial </span> // Span accepte le style, la classe et les attributs d'ID
<Div class = note> <p> div peut contenir des paragraphes, des titres, des tables et même d'autres parties </p> </div>
5. <H1 class = punk> attribut de classe </h1> // voir 3 pour la définition.
6. <P id = wdg97> id attribut </p> // Voir 3 pour la définition.
7. Liste de propriétés
Style de police: Style de police: [Normal | Italique |
Taille de la police: la taille de la police: XX-SMALL |
Décoration de texte: DÉCRIPATION TEXTE: [Soulignez-vous ||
Transformation de texte: Text Transform: [Aucun |
Couleur d'arrière-plan: Color d'arrière-plan: [<Omlome> |
Image d'arrière-plan: Image d'arrière-plan: [<URLS> |
HEURS DE LIGNE: [NORME | <
Style de la frontière: Aucun | pointillé |
Float: Float: à droite |
8. unité de longueur
Unités relatives:
Em (em, la hauteur de la police de l'élément)
ex (x-height, la hauteur de la lettre "x")
PX (pixels, par rapport à la résolution d'écran)
Longueur absolue:
en (pouce, 1 pouce = 2,54 centimètres)
CM (centimètre, 1 centimètre = 10 millimètres)
mm (compteur)
PT (point, 1 point = 1/72 pouce)
PC (PA, 1 PA = 12 points)
◇ [Delphi] Brèves étapes pour faire du VCL
1. Créer des événements de méthode d'attribut composant
(Créer des unités de bibliothèque, hériter de nouveaux types, ajouter des propriétés, des méthodes, des événements, des composants d'enregistrement et créer des fichiers de package)
2. Traitement de désespoir
3. exception
4. pièces visibles
◇ [Delphi] Chargement de la bibliothèque de liens dynamiques
Chargement statique: nom de la procédure; «lib.dll» externe;
Charge dynamique: poignée VAR: Thandle;
Handle: = LoadLibrary ('lib.dll');
Si la poignée <> 0 alors
commencer
{dosomething}
Freelibrary (poignée);
fin;
◇ [Delphi] Variables et adresses du pointeur
var x, y: entier; p: ^ entier; // Pointer to Integer Variable
x: = 10;
p: = @ x; // l'adresse de la variable x
y: = p ^; // attribuer le pointeur p à y
@@ procédure // renvoie l'adresse mémoire de la variable de processus
◇ [Delphi] détermine si le caractère est un caractère chinois
ByteType ('Comment allez-vous haha', 1) = MBLEADBYTE // est le premier caractère
ByteType ('comment vas-tu haha', 2) = mbtrailbyte // est le deuxième caractère
ByteType ('comment vas-tu haha', 5) = mbsinglebyte // pas un caractère chinois
◇ opération de positionnement de la note [Delphi]
memo1.lines.delete (0) // supprimer la ligne 1
memo1.selstart: = 10 // localiser 10 octets
◇ [Delphi] Obtenir un code interne de caractères à deux octets
fonction getit (s: string): entier;
commencer
Résultat: = octet (s [1]) * 100 $ + octet (s [2]);
fin;
Utilisation: getit ('calcul') // $ bcc6 qui est décimal 48326
◇ [Delphi] Appel Ajouter une procédure de stockage de données
La procédure stockée est la suivante:
Créer une procédure AdDRecord (
Record1 Varchar (10)
Record2 Varchar (20)
)
comme
commencer
Insérer dans TableName (Field1, Field2) Valeurs (: Record1 ,: Record2)
fin
Exécutez la procédure stockée:
Exécuter la procédure AdDRecord ("URRECORD1", "URRECORD2")
◇ [Delphi] Enregistrer les fichiers dans les champs blob
fonction blobContentToString (const fileName: String): String;
commencer
avec tFileStream.Create (nom de fichier, fmOpenRead)
essayer
setLength (résultat, taille);
lire (pointeur (résultat) ^, taille);
enfin
gratuit;
fin;
fin;
// Enregistrer le champ
commencer
if (openDialog1.execute) alors
commencer
SFileName: = OpenDialog1.FileName;
adoable1.edit;
Adotable1.FieldByName ('Visio'). Asstring: = BlobContentToString (nom de fichier);
Adotable1.post;
fin;
◇ [Delphi] Copiez tous les fichiers dans le presse-papiers
Utilise Shlobj, ActiveX, ClipBrd;
Procédure TForm1.CopyToClipBrd (Var FileName: String);
var
FE: TFormateTC;
Moyen: Tstgmedium;
DropFiles: pdropfiles;
PFILE: PHAR;
commencer
Fe.cfformat: = cf_hdrop;
Fe.dwaspect: = dvaspect_content;
Fe.Tymed: = Tymed_hglobal;
Mediad.hglobal: = globalalloc (gmem_share ou gmem_zeroinit, sizeof (tdropfiles) + longueur (nom de fichier) +1);
si moyen.hglobal <> 0 alors commencez
Moyen.tymed: = Tymed_hglobal;
DropFiles: = Globallock (moyen.hglobal);
essayer
DropFiles ^ .pfiles: = sizeof (tdropfiles);
DropFiles ^ .fwide: = false;
longInt (pfile): = longInt (dropFiles) + sizeof (tdropfiles);
Strpcopy (pfile, nom de fichier);
Inc (pfile, longueur (nom de fichier) +1);
pfile ^: = # 0;
enfin
GlobalUnlock (moyen.hglobal);
fin;
Clipboard.SetAshandle (cf_hdrop, mediad.hglobal);
fin;
fin;
◇ [Delphi] Énumérez les processus en cours d'exécution du système actuel
USESTLHELP32;
procédure TForm1.Button1Click(Expéditeur : TObject);
VAR LPPE: TProcessentry32;
Trouvé: booléen;
Main: Thandle;
commencer
Main: = createToolHelp32Snapshot (th32cs_snapall, 0);
trouvé: = process32First (main, LPPE);
tout en trouvant faire
commencer
Listbox1.items.add (strpas (lppe.szexeFile));
trouvé: = process32Next (main, LPPE);
fin;
fin;
◇ [Delphi] Créez une nouvelle table de table2 basée sur BDETABLE1
Tableau 2: = tTable.Create (nil);
essayer
TABLE2.DATABASENAME: = TABLE1.DATABASENAME;
TABLE2.FieldDefs.assign (tableau 1.FieldDefs);
TABLE2.IndexDefs.AssIGN (Table1.IndexDefs);
Table2.TableName: = 'new_table';
Table.CreateTableable ();
enfin
Table.Free ();
fin;
◇ [Delphi] La meilleure façon de comprendre la création et la référence de la DLL
// Regardez la source DLL (fichier -> nouveau -> dll) d'abord
Bibliothèque Project1;
utilise
Sysutils, classes;
Fonction addit (f: entier; s: entier): entier; export;
commencer
makeasum: = f + s;
fin;
exportations
addit;
fin.
// Appel (dans votre projet)
mise en œuvre
fonction addit (f: entier; s: entier): entier; loin; project 1 'externe 1'; //
{L'appel est addit (2,4);
◇ [Delphi] Lisez dynamiquement la taille du programme lui-même
Fonction GesselfSize: entier;
var
F: fichier d'octets;
commencer
fileMode: = 0;
AssignFile (f, application.exename);
réinitialiser (f);
Résultat: = Files size (f); // L'unité est des octets
Fermer File (F);
fin;
◇ [Delphi] Lire les informations du BIOS
avec memo1.lines font
commencer
Add ('MainboardBiosName:' + ^ i + String (pCh (ptr ($ fe061))));
Add ('MainboardBioscopyRight:' + ^ i + String (pCh (ptr ($ fe091))));
Add ('MainboardBiOSDate:' + ^ i + String (pCh (ptr ($ ffff5))));
Add ('emboîte MainBiSserialNo:' + ^ i + String (PCHA (PTR ($ fec71))));
fin;
◇ [Delphi] Créent dynamiquement des alias MSSQL
procédure TForm1.Button1Click(Expéditeur : TObject);
var myList: tStringList;
commencer
MyList: = tStringList.create;
essayer
avec Mylist faire
commencer
Add ('Server Name = 210.242.86.2');
Add ('database name = db');
Ajouter ('nom d'utilisateur = SA');
fin;
Session1.addalias ('TestsQL', 'MSSQL', MyList);
Session1.Saveconfigfile;
enfin
MyList.free;
Session1.active: = true;
Database1.databasename: = 'db';
Database1.aliasname: = 'testsql';
Database1.loginprompt: = false;
Database1.params.add ('nom d'utilisateur = SA');
Database1.params.add ('mot de passe =');
Database1.Connected: = true;
fin;
fin;
procédure TForm1.Button2Click(Expéditeur : TObject);
commencer
Base de données1.connected: = false;
Session1.Deletealias («TestsQL»);
fin;
◇ [Delphi] jouer de la musique de fond
utilise mmSystem
// jouer de la musique
McISENDSTring ('Open E: /1.Mid Type Sequenceur Alias Nn', '', 0, 0);
MCISENDSTRING ('Play nn from 0', '', 0, 0);
MCISENDSTRING («Fermer Animation», ', 0, 0);
fin;
// Arrête de jouer
McISENDSTring ('Open E: /1.Mid Type Sequenceur Alias Nn', '', 0, 0);
MCISENDSTRING ('stop nn', '', 0, 0);
MCISENDSTRING («Fermer Animation», ', 0, 0);
◇ [Delphi] Un exemple de code pour les interfaces et les classes
Type {Interface et Déclaration de classe: la différence est que les membres de données, les méthodes non publiques et les méthodes publiques n'utilisent pas le mot-clé public dans l'interface}
Isample = interface // Définir l'interface ISPELLEM
function getString: String;
fin;
Tsample = classe (TinterfacedObject, isample)
publique
function getString: String;
fin;
// Définition de la fonction
fonction tsample.getString: String;
commencer
Résultat: = «ce qui est le spectacle»;
fin;
// Appeler l'objet de classe
échantillon VAR: tsample;
commencer
échantillon: = tSample.Create;
showMessage (samptonnet.getString + 'Class Object!');
échantillon.
fin;
// appelle l'interface
var sampleinterface: isample;
échantillon: tsample;
commencer
échantillon: = tSample.Create;
SampleInterface: = échantillon; // l'implémentation de l'interface doit utiliser la classe
{Les deux lignes ci-dessus peuvent également être exprimées en échantillon: = tsample.create;}
showMessage (samptonneur Interface.getString + 'Interface!');
//sample.free; {Classes locales, les classes à l'interface sont automatiquement publiées}
SampleInterface: = nil; {Release Interface Object}
fin;
◇ [Delphi] La barre des tâches ne ressemble pas à un programme approprié
var
Extensionstyle: entier;
commencer
Application.Initialiser ;
ExtendedStyle: = GetWindowlong (application.handle, gwl_exstyle);
SetWindowlong (application.handle, gwl_exstyle, extendStyle ou ws_ex_toolwindow et non ws_ex_appwindow);
Application.CreateForm(TForm1, Form1);
Application.Exécuter ;
fin.
◇ [Delphi] Alt + Ctrl + del ne peut pas voir le programme
Ajouter la déclaration après la mise en œuvre:
Fonction RegisterserviceProcess (dwprocessId, dwtype: entier): entier;
RegisterServiceProcess (GetCurrentProcessId, 1); // Hide
RegisterServiceProcess (GetCurrentProcessId, 0); // Affichage
◇ [Delphi] Détectez le symbole d'entraînement optique
Var Drive: char;
CDROMID: entier;
commencer
pour le lecteur: = 'd' à 'z' faire
commencer
cdromid: = getDriveType (pChar (lecteur + ': /'));
Si CDromid = 5 alors ShowMessage («Votre lecteur CD-ROM est:« + Disk + »Disk!»);
fin;
fin;
◇ [Delphi] Détectez la carte son
Si AuxgetNumDevs () <= 0 alors ShowMessage («No Soundcard Found!») Else ShowMessage («Toute carte son trouvée!»);
◇ [Delphi] Dessinez dans la grille de chaîne
Événement stringgrid.ondrawcell
avec StringGrid1.Canvas faire
Draw (rect.left, rect.top, image1.picture.graphic);
◇ [SQL Server] Une autre façon d'écrire l'instruction similaire dans SQL
Par exemple, pour trouver tous les utilisateurs dont le nom d'utilisateur contient "C", vous pouvez utiliser
Utilisez MyDatabase
Sélectionnez * dans le tableau 1 où le nom d'utilisateur comme '% c% "
Voici une autre façon de remplir la fonction ci-dessus:
Utilisez MyDatabase
Sélectionnez * dans le tableau 1 où Charindex ('C', nom d'utilisateur)> 0
En théorie, cette méthode a une déclaration de jugement de plus que la méthode précédente, c'est-à-dire> 0, mais ce processus de jugement est le plus rapide.
Pour la chaîne et d'autres opérations, ce n'est pas un gros problème d'utiliser la fonction Charindex.
Les caractères trouvés peuvent être utilisés directement dans ce charindex, comme suit:
Utilisez MyDatabase
Sélectionnez * dans le tableau 1 où Charindex ('%', nom d'utilisateur)> 0
Il peut également être écrit comme:
Utilisez MyDatabase
Sélectionnez * dans le tableau 1 où Charindex (char (37), nom d'utilisateur)> 0
Le caractère ASCII est%
◇ [Delphi] SQL affiche plusieurs bases de données / tableaux
Sélectionnez A.Bianhao, a.xingming, b.gongzi de "Jianjie.dbf" A,, Gongzi.dbf "B
Où a.bianhao = b.bianhao
◇ [Delphi] RFC (demande de commentaire)
IETF (Internet Engineering Task Force) maintient les documents RFC http://www.ietf.cnri.reston.va.us
RFC882: Structure d'en-tête de message
RFC1521: MIME PARTIE 1, méthode de transmission de messages
RFC1945: documentation de transfert de documents multimédias
◇ [Delphi] Utilisation du tnmuupprocesseur
var instream, strestream: tFilestream;
commencer
instream: = tFileStream.create (infile.txt, fmOpenRead);
Outstream: = tFileStream (outfile.txt, fmcreate);
Nmuue.method: = uucode; {uuencode / decode}
//Nmuue.method:=uumime; {mime}
NmuUe.inputStream: = insideam;
NmuUe.outputStream: = OutStream;
NmuUe.encode; {Encoding Processing}
//Nmuue.decode ;{decoding Processing}
instream.free;
strestream.recref;
fin;
◇ opération [delphi] tfilestream
// Lire le nombre d'octets de la position actuelle du flux de fichiers vers le tampon tampon
fonction lecture (var tampon; count: longint): longint; override;
// Lisez le tampon de tampon dans le flux de fichiers
Fonction Write (const Buffer; Count: Longint): Longint; remplacer;
// Définissez le pointeur de lecture et d'écriture actuel du flux de fichiers à décalé
Fonction Seek (Offset: longint; Origin: Word): Longint; remplacer;
origine = {sofrombeginning, sofromcurrent, sofromend}
// Copier le nombre de la position actuelle dans un autre flux de fichiers à la position actuelle dans le flux de fichiers actuel
Fonction CopyFrom (Source: TStream; Count: Longint): Longint;
// Lisez le fichier spécifié au flux de fichiers
var myfstream: tFileStream;
commencer
myfstream: = tFileStream.Create (OpenDialog1.FileName, fmOpenRead);
fin;
[JavaScript] Vérifiez si IE Plug-In Shockwave & Quicktime est installé
<script linguisse = "javascript">
var myplugin = navigator.plugins ["Shockwave"];
si (myplugin)
document.writeln ("Vous avez installé Shockwave!")
autre
Document.Writeln ("Vous n'avez pas installé Shockwave!")
</ script> <br>
<script linguisse = "javascript">
var myplugin = navigator.plugins ["QuickTime"];
si (myplugin)
Document.Writeln ("Vous avez rapidement installé!")
autre
document.writeln ("Vous n'avez pas installé Quicktime!")
</script>
[Internet] L'effet de la référence Iframe dans le tableau
<table cellpadding="0" cellpacing="0">
<tr>
<Td> <iLayer id = "ad1" visibilité = "Hidden"> </ iLayer> <NoLerer> <iframe src = "i: /jinhtml/zj/h21.htm" marginwidth = "0" marginheight = "110" hspace = "10" vspace = "20" frameborder = "0" Scrolling = "1"> </ iframe> </noLer> </td>
</tr>
</ table>
◇ [Delphi] Compétences de contrôle WebBrowser
1. Réaliser la fonction d'impression
var vain, vaout: olevariant;
WebBrowser.ControlInterface.execwb (OlecMDID_PRINT, OlecmdexeCOPT_DONTPROMPTUSER, VAIN, VAOUT);
2. WebBrowser lit la page de Stream
fonction tform1.LoadFromStream (COS Astream: tStream): hResult;
commencer
Astream.seek (0, 0);
Résultat: = (webBrowser1.Document en tant qu'ipeSistStreAmInit) .load (tStreamAdapter.Create (Astream));
fin;
3. "À propos:" Le protocole vous permettra de naviguer vers une chaîne HTML:
Procédure TForm1.LoadhtmlString (shtml: string);
Var Flags, TargetFrameName, Postdata, Headers: Olevariant;
Webbrowser1.navigate ('À propos:' + shtml, drapeaux, cibleFramename, postdata, en-têtes)
4. "Res:" Le protocole vous permettron de naviguer vers un fichier HTML stocké sous forme de ressource.
Procédure tform1.LoadhtmlResource;
Var Flags, TargetFrameName, Postdata, Headers: Olevariant;
Webbrowser1.navigate ('res: //' + application.exename + '/ myhtml', drapeaux, cibleFramename, postdata, en-têtes)
Utilisez BRCC32.exe pour créer des fichiers de ressources (* .rc)
Myhtml 23 "./html/myhtml.htm"
Plushtml 23 "./html/morehtml.htm"
{$ R html.res} //html.rc est compilé en html.res
5. Enregistrer le fichier HTML complet
var
Htmldocument: ihtmlDocument2;
Persistfile: IpersistFile;
commencer
HtmlDocument: = webBrowser1.Document as ihtmlDocument2;
Persistfile: = htmlDocument as ipersistfile;
Persistfile.save (stringToolestR ('test.htm'), true);
tandis que htmldocument.readystate <> 'complet' faire
Application.ProcessMessages;
fin;
◇ [Delphi] Installez le contrôle WebBrowser (contrôle IE intégré)
Vous devez d'abord vous assurer que le système a Internet Explorer 4 ou ultérieur installé, menu Delphi - Composant - Contrôle Activex d'importx, sélectionnez Microsoft Internet Controls "Dans la liste et ajouter à un fichier de package existant, le contrôle WebBrowser sera affiché dans Le panneau de commande ActiveX.
◇ [Delphi] Implémentez la forme translucide Windows2000
fonction setLayeredWindowAtTributes (hwnd: hwnd; crkey: longint; Balpha: byte; dwflags: longint): longInt;
procédure TForm1.FormCreate(Expéditeur : TObject);
var l: longint;
commencer
l: = getWindowlong (manche, gwl_exstyle);
L: = L ou 80000 $;
Setwindowlong (manche, gwl_exstyle, l);
SetLayeredWindowAttributes (poignée, 0, 180, 2);
fin;
◇ [Delphi] Le programme affiche la publicité WebBrowser de chargement des images
drapeau var, cadre, pdata, en-tête: olevariant;
commencer
Webbrowser1.navigate ('http://www.chineseall.com/images/logo.jpg', drapeau, cadre, pdata, en-tête)
fin;
◇ [Delphi] Calculez la taille d'un répertoire
fonction getDirectorySize (const adirectory: string): entier;
var
Dir: tsearchrec;
Ret: entier;
Chemin: String;
commencer
Résultat := 0;
Chemin: = ExtractFilePath (Adirectory);
Ret: = synutils.FindFirst (addirectory, faanyfile, dir);
Si ret <> no_error alors
sortie;
essayer
Pendant que ret = no_error fait
commencer
Inc (résultat, dir.size);
// Si c'est un répertoire et ce n'est pas '.'
if (dir.attr dans [fadirectory]) et (dir.name [1] <> '.') puis
Inc (résultat, getDirectorySize (path + dir.name + '/*.*'));
Ret: = synutils.findNext (dir);
fin;
enfin
Sysutils.findClose (dir);
fin;
fin;
◇ [Delphi] effacer un répertoire
fonction videDirectory (theDirectory: String; récursif: booléen):
Booléen;
var
Searchrec: tsearchrec;
Res: entier;
commencer
Résultat: = false;
TheDirectory: = NormalDir (Thedirectory);
Res: = findFirst (theDirectory + '*. *', Faanyfile, searchrec);
essayer
tandis que res = 0 faire
commencer
if (searchrec.name <> '.') et (searchrec.name <> '..') puis
commencer
if ((searchrec.attr et fadirectory)> 0) et récursif
puis commence
VideDirectory (theDirectory + SearchRec.Name, true);
Supprimeirectory (pChar (theDirectory + SearchRec.Name));
fin
sinon commencer
DeleteFile (PCHA (TheDirectory + SearchRec.Name))
fin;
fin;
Res: = findNext (searchRec);
fin;
Résultat: = true;
enfin
FindClose (SearchRec.FindHandle);
fin;
fin;
◇ [Delphi] Publier le programme ADO et installer ADO
Exécutez une fois MDAC_TYP.EXE.
Le répertoire après l'installation du programme d'installation est le même que le chemin du répertoire défini dans le programme. est installé.
◇ [Delphi] Interception des messages du système Windows: message WM_CLOSE
Procédure wmclose (var msg: tMessage); message wm_close;
procédure tmainform.wmclose (var msg: tMessage);
commencer
m_bclosenoffery: = false;
hérité;
fin;