Die grundlegenden Entwicklungskompetenzen von DELPHI von unseren Vorfahren
Zusammenstellung: Mieter Quelle: Monopoly Forum
◇[DELPHI] Kopieren Sie Dateien aus der Netzwerkumgebung
verwendet Shellapi;
copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);
◇[DELPHI] erzeugt einen Mauszieheffekt
Implementiert durch MouseMove-Ereignis, DragOver-Ereignis, EndDrag-Ereignis, wie z. B. LABEL auf PANEL:
var xpanel,ypanel,xlabel,ylabel:integer;
PANELs MouseMove-Ereignis: xpanel:=x;ypanel:=y;
DragOver-Ereignis von PANEL: xpanel:=x;ypanel:=y;
LABELs MouseMove-Ereignis: xlabel:=x;ylabel:=y;
EndDrag-Ereignis von LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] Rufen Sie das WINDOWS-Verzeichnis ab
verwendet Shellapi;
var windir:array[0..255] of char;
getwindowsdirectory(windir,sizeof(windir));
Oder lesen Sie den Speicherort aus der Registrierung:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion
SystemRoot-Schlüssel, erhalten als: C:/WINDOWS
◇[DELPHI] Zeichnen Sie Linien auf FORM oder anderen Containern
var x,y:array [0..50] of integer;
canvas.pen.color:=clred;
canvas.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇[DELPHI] Verwendung der Zeichenfolgenliste
var Tips:tstringlist;
Tipps:=tstringlist.create;
Tips.loadfromfile('filename.txt');
edit1.text:=tips[0];
Tips.add('Hinzufügungszeichenfolge für die letzte Zeile');
Tips.insert(1,'Zeichenfolge in Zeile Nr. 2 einfügen');
Tips.savetofile('newfile.txt');
Tips.Free;
◇[DELPHI]Einfache Bedienung der Zwischenablage
richedit1.selectall;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
edit1.pastefromclipboard;
◇[DELPHI] Über Datei- und Verzeichnisoperationen
Chdir('c:/abcdir');Gehe zum Verzeichnis
Mkdir('dirname');Verzeichnis erstellen
Rmdir('dirname'); Verzeichnis löschen
GetCurrentDir;//Den aktuellen Verzeichnisnamen abrufen, ohne „/“
Getdir(0,s);//Holen Sie sich den Namen des Arbeitsverzeichnisses s:='c:/abcdir';
Deletfile('abc.txt');//Datei löschen
Renamefile('old.txt','new.txt');//Datei umbenennen
ExtractFilename(filelistbox1.filename);//Den Dateinamen abrufen
ExtractFileExt(filelistbox1.filename);//Holen Sie sich das Dateisuffix
◇[DELPHI] Dateiattribute verarbeiten
attr:=filegetattr(filelistbox1.filename);
if (attr and faReadonly)=faReadonly then ... //schreibgeschützt
if (attr and faSysfile)=faSysfile then ... //system
if (attr and faArchive)=faArchive then ... //Archive
if (attr and faHidden)=faHidden then ... //Hide
◇[DELPHI]Dateien außerhalb des Programms ausführen
WINEXEC//Ausführbare Datei aufrufen
winexec('command.com /c copy *.* c:/',SW_Normal);
winexec('abc.txt starten');
ShellExecute oder ShellExecuteEx//Starten Sie das Dateizuordnungsprogramm
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] Rufen Sie den Namen des Prozesses ab, der auf dem System ausgeführt wird
var hCurrentWindow:HWnd;szText:array[0..254] of char;
beginnen
hCurrentWindow:=Getwindow(handle,GW_HWndFrist);
while hCurrentWindow <> 0 do
beginnen
if Getwindowtext(hcurrnetwindow,@sztext,255)>0 then listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
Ende;
Ende;
◇[DELPHI]Informationen zum Einbetten von Baugruppen
Asm-Ende;
EAX, ECX und EDX können nach Belieben geändert werden; ESI, EDI, ESP, EBP und EBX können nicht geändert werden.
◇[DELPHI]Informationen zur Typkonvertierungsfunktion
FloatToStr//Gleitkomma zu String
FloatToStrF//Formatierter Gleitkommawert in Zeichenfolge
IntToHex//Ganzzahl zu Hexadezimal
TimeToStr
DateToStr
DateTimeToStr
FmtStr//Gib eine Zeichenfolge im angegebenen Format aus
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[DELPHI]String-Prozeduren und -Funktionen
Insert(obj,target,pos);// Der String target wird an der Position von pos eingefügt. Wenn das Einfügeergebnis größer als die maximale Länge des Ziels ist, werden die überschüssigen Zeichen abgeschnitten. Wenn Pos außerhalb von 255 liegt, tritt ein Laufzeitfehler auf. Beispiel: st:='Brian', dann wird durch Einfügen('OK',st,2) st zu 'BrOKian'.
Delete(st,pos,Num);//Löschen Sie eine Teilzeichenfolge von Num-Zeichen (Ganzzahl), beginnend mit der Pos-Position (Ganzzahl) in der ST-Zeichenfolge. Beispiel: st:='Brian', dann wird aus Löschen(st,3,2) Brn.
Str(value,st);//Konvertieren Sie den numerischen Wert (Ganzzahl oder Realtyp) in eine Zeichenfolge und fügen Sie ihn in st ein. Wenn beispielsweise a=2,5E4 ist, sorgt str(a:10,st) dafür, dass der Wert von st „25000“ ist.
Val(st,var,code);//Konvertieren Sie den Zeichenfolgenausdruck st in den entsprechenden ganzzahligen oder reellen Wert und speichern Sie ihn in var. St muss eine Zeichenfolge sein, die einen numerischen Wert darstellt und den Regeln für numerische Konstanten entspricht. Wenn während des Konvertierungsvorgangs kein Fehler erkannt wird, wird der Variablencode auf 0 gesetzt, andernfalls wird er auf die Position des ersten Fehlerzeichens gesetzt. Beispiel: st:=25.4E3, x ist eine reelle Variable, dann ergibt val(st,x,code) den X-Wert 25400 und den Codewert 0.
Copy(st.pos.num);//Gibt einen Teilstring zurück, der an der Position pos (Ganzzahl) im st-String beginnt und num (Ganzzahl) Zeichen enthält. Wenn pos größer als die Länge des st-Strings ist, wird ein leerer String zurückgegeben. Wenn pos außerhalb von 255 liegt, tritt ein Laufzeitfehler auf. Beispiel: st:='Brian', dann gibt Copy(st,2,2) 'ri' zurück.
Concat(st1,st2,st3...,stn);//Verketten Sie die durch alle unabhängigen Variablen dargestellten Zeichenfolgen in der angegebenen Reihenfolge und geben Sie den verketteten Wert zurück. Wenn die Länge des Ergebnisses 255 beträgt, tritt ein Laufzeitfehler auf. Beispiel: st1:='Brian',st2:='',st3:='Wilfred', dann gibt Concat(st1,st2,st3) „Brian Wilfred“ zurück.
Länge(st);//Gibt die Länge des String-Ausdrucks st zurück. Beispiel: st:='Brian', der Rückgabewert von Length(st) ist 5.
Pos(obj,target);//Gibt die Position zurück, an der die Zeichenfolge obj zum ersten Mal in der Zielzeichenfolge erscheint. Wenn das Ziel keine passende Zeichenfolge hat, ist der Rückgabewert der Pos-Funktion 0. Beispiel: target:='Brian Wilfred', dann ist der Rückgabewert von Pos('Wil',target) 7 und der Rückgabewert von Pos('hurbet',target) ist 0.
◇[DELPHI]Über den Umgang mit der Registrierung
verwendet Registry;
var reg:Tregistry;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('Systemsteuerung/Desktop',false);
reg.WriteString('Titelhintergrund','0');
reg.writeString('Wallpaper',filelistbox1.filename);
reg.closereg;
reg.frei;
◇[DELPHI]Über Tastaturkonstantennamen
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) – 7 Milliarden $ (123)
AZ: 41 $ (65) – 5 A $ (90)
0-9: 30 $ (48) – 39 $ (57)
◇[DELPHI] Bestimmen Sie vorab die Muttersprache des Programms
DOS-Eingabeaufforderung der DELPHI-Software: Dieses Programm muss unter Win32 ausgeführt werden.
DOS-Eingabeaufforderung für VC++-Software: Dieses Programm kann nicht im DOS-Modus ausgeführt werden.
◇[DELPHI]Betrieb von Cookies
Response.cookies("Name").domain:='http://www.086net.com';
mit „response.cookies.add“ tun
beginnen
name:='Benutzername';
value:='Benutzername';
Ende
◇[DELPHI] zum Dokumentmenü-Link hinzugefügt
verwendet Shellapi,shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//Verbindung hinzufügen
shAddToRecentDocs(shArd_path,nil);//Clear
◇[Verschiedenes] Sichern Sie das Wörterbuch der intelligenten ABC-Eingabemethoden
windows/system/user.rem
windows/system/tmmr.rem
◇[DELPHI] Bestimmen Sie die Maustasten
if GetAsyncKeyState(VK_LButton)<>0 then ... //Linke Taste
if GetAsyncKeyState(VK_MButton)<>0 then ... //mittlerer Schlüssel
if GetAsyncKeyState(VK_RButton)<>0 then ... //Rechtsklick
◇[DELPHI]Legen Sie die maximale Anzeige des Formulars fest
onFormCreate-Ereignis
self.width:=screen.width;
self.height:=screen.height;
◇[DELPHI]-Taste zum Annehmen von Nachrichten
Verarbeitet im OnCreate-Ereignis: application.OnMessage:=MyOnMessage;
procedure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
beginnen
wenn msg.message=256 dann ... //JEDER Schlüssel
wenn msg.message=112 dann ... //F1
wenn msg.message=113 dann ... //F2
Ende;
◇[Verschiedenes]Freigegebene Ordner ausblenden
Sharing-Effekt: zugänglich, aber unsichtbar (im Ressourcenmanagement, Netzwerkumgebung)
Benennen Sie die Freigabe: Direction$
Besuchen Sie: //computer/direktion/
◇[Java-Skript] Häufig verwendete Effekte auf Java-Skript-Webseiten
Die Webseite soll in 60 Sekunden geschlossen werden
<script language="java script"><!--
settimeout('window.close();',60000)
--></script>
Fenster schließen
<a href="/" onclick="Javascript:window.close();return false;">Schließen</a>
Geplante URL-Übertragung
<meta http-equiv="refresh" content="40;url=http://www.086net.com">
Als Startseite festlegen
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">Als Startseite festlegen</a>
Setzen Sie ein Lesezeichen für diese Seite
<a href="javascript:window.external.addfavorite('http://086net.com','[无名pier]')">Diese Website zu Ihren Favoriten hinzufügen</a>
Dem Kanal beitreten
<a href="javascript:window.external.addchannel('http://086net.com')">Kanal hinzufügen</a>
◇[DELPHI]Bezogen auf Textbearbeitung
checkbox1.checked:=nicht checkbox1.checked;
wenn checkbox1.checked dann richedit1.font.style:=richedit1.font.style+[fsBold] sonst richedit1.font.style:=richedit1.font.style-[fsBold]//bold
wenn checkbox1.checked dann richedit1.font.style:=richedit1.font.style+[fsItalic] sonst richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
wenn checkbox1.checked dann richedit1.font.style:=richedit1.font.style+[fsUnderline] sonst richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//Left
memo1.alignment:=taRightJustify;//right
memo1.alignment:=taCenter;//Zentriert
◇[DELPHI] Textfarbe zufällig generieren
randomisieren;//zufälliger Startwert
memo1.font.color:=rgb(random(255),random(255),random(255));
◇[DELPHI]DELPHI5 UPDATE Upgrade-Patch-Seriennummer
1000003185
90X25fx0
◇[DELPHI] Unzulässige Zeichenfilterung in Dateinamen
for i:=1 to length(s) do
if s[i] in ['/','/',':','*','?','<','>','|'] dann
◇[DELPHI]Definition und Beschreibung der Konvertierungsfunktion
datetimetofiledate (datetime:Tdatetime):longint; Konvertiert einen Datums- und Uhrzeitwert im Tdatetime-Format in einen Datums- und Uhrzeitwert im DOS-Format
datetimetostr (datetime:Tdatetime):string; Konvertieren Sie die Tdatatime-Formatvariable in einen String. Wenn der datetime-Parameter keinen Datumswert enthält, wird das zurückgegebene String-Datum als 00/00/00 angezeigt Wenn Sie den datetime-Parameter verwenden, lautet die zurückgegebene Zeichenfolge. Der Zeitabschnitt wird als 00:00:00 Uhr angezeigt
datetimetostring (var result string;
const-Format:string;
datetime:Tdatetime); Konvertieren Sie Zeit- und Datumswerte gemäß der angegebenen Formatzeichenfolge, Ergebnis ist die Ergebniszeichenfolge, Format ist die Konvertierungsformatzeichenfolge, datetime ist der Datums- und Zeitwert
datetostr (date:Tdatetime) verwendet die durch die globale Variable shortdateformat definierte Formatzeichenfolge, um den Datumsparameter in die entsprechende Zeichenfolge zu konvertieren
floattodecimal (var result:Tfloatrec;value:
erweitert;Genauigkeit,Dezimalstellen:
Ganzzahl); Konvertieren Sie eine Gleitkommazahl in eine Dezimaldarstellung
floattostr (value:extended):string Konvertiert den Gleitkommawert in das String-Format. Diese Konvertierung verwendet das normale Zahlenformat und die effektive Anzahl der konvertierten Ziffern beträgt 15.
floattotext (buffer:pchar;value:extended;
Format:Tfloatformat;Präzision,
digits:integer):integer; Verwenden Sie das angegebene Format, die angegebene Genauigkeit und die Dezimalzahl, um den Wert der Gleitkommazahl in die Dezimaldarstellung umzuwandeln. Der Rückgabewert der Funktion ist die Anzahl der im Puffer gespeicherten Zeichen. Der Puffer ist kein 0-Ergebniszeichenfolgenpuffer.
floattotextfmt (buffer:pchar;value:extended;
format:pchar):integer Verwenden Sie das angegebene Format, um den Gleitkommawert in eine Dezimaldarstellung umzuwandeln. Das Konvertierungsergebnis wird im Pufferparameter gespeichert. Der Rückgabewert der Funktion ist die Anzahl der im Puffer gespeicherten Zeichen.
inttohex (Wert:longint;digits:integer):
string; Konvertiert den angegebenen numerischen Wert in einen hexadezimalen String. Der Parameter Ziffern gibt die Anzahl der Ziffern an, die in der Konvertierungsergebniszeichenfolge enthalten sind.
inttostr (value:longint):string wandelt eine Ganzzahl in eine Dezimalzeichenfolge um
strtodate (const S:string):Tdatetime Konvertiert eine Zeichenfolge in einen Datumswert. S muss eine Datumszeichenfolge im zulässigen Format enthalten.
strtodatetime (const S:string):Tdatetime Konvertiert die Zeichenfolge S in das Datum-Uhrzeit-Format. S muss das Format MM/TT/JJ HH:MM:SS[AM|PM] haben, wobei die Datums- und Uhrzeittrennzeichen mit dem Systemzeitraum übereinstimmen Zeitkonstante Einstellungsbezogen. Wenn keine AM- oder PM-Informationen angegeben sind, wird das 24-Stunden-Format verwendet.
strtofloat (const S:string):extended; Wandelt die angegebene Zeichenfolge in eine Gleitkommazahl um. Die Zeichenfolge hat das folgende Format:
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint Konvertiert eine numerische Zeichenfolge in eine Ganzzahl. Die Zeichenfolge kann im Dezimal- oder Hexadezimalformat vorliegen. Wenn die Zeichenfolge keine zulässige numerische Zeichenfolge ist, generiert das System eine ECONVERTERROR-Ausnahme.
strtointdef (const S:string;default:
longint):longint; Konvertieren Sie die Zeichenfolge S in eine Zahl. Wenn S nicht in eine Zahl umgewandelt werden kann, gibt die Funktion strtointdef den Wert des Parameters default zurück.
strtotime (const S:string):Tdatetime Konvertiert die Zeichenfolge S in einen TDATETIME-Wert. S hat das Format HH:MM:SS[AM|PM].
timetostr (time:Tdatetime):string; Parameter TIME in einen String konvertieren. Das Format der Konvertierungsergebniszeichenfolge hängt von der Einstellung der zeitbezogenen Konstanten des Systems ab.
◇[DELPHI]-Programm erscheint nicht in ALT+STRG+ENTF
Deklaration nach Implementierung hinzufügen:
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer external 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID, 1);//Ausblenden
RegisterServiceProcess(GetCurrentProcessID, 0);//Display
Unsichtbar mit ALT+ENTF+STRG
◇[DELPHI] Programm erscheint nicht in der Taskleiste
nutzt Windows
var
ExtendedStyle: Ganzzahl;
beginnen
Application.Initialize;
//============================================= ==============
ExtendedStyle := GetWindowLong (Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtendedStyle ODER WS_EX_TOOLWINDOW
UND NICHT WS_EX_APPWINDOW);
//============================================= ===============
Application.CreateForm(TForm1, Form1);
Application.Run;
Ende.
◇[DELPHI]So ermitteln Sie, ob das DFÜ-Netzwerk aktiviert oder deaktiviert ist
wenn GetSystemMetrics(SM_NETWORK) AND $01 = $01 dann
showmessage('Online!')
else showmessage('Nicht online!');
◇[DELPHI]IP in Domänennamen umwandeln
function GetDomainName(Ip:string):string;
var
pH:PHostent;
data:twsadata;
ii:dWort;
beginnen
WSAStartup($101, Daten);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
if (ph<>nil) then
Ergebnis:=pH.h_name
anders
Ergebnis:='';
WSACleanup;
Ende;
◇[DELPHI] Umgang mit „Rechtsklick-Menü“
var
reg: TRegistry;
beginnen
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('', 'Operation(&C)');
reg.CloseKey;
reg.Frei;
showmessage('FERTIG!');
Ende;
◇[DELPHI]Senden Sie den virtuellen Schlüsselwert mit Strg V
Prozedur sendpaste;
beginnen
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);
Ende;
◇[DELPHI]Der Laufwerksbuchstabe des aktuellen optischen Laufwerks
Prozedur getcdrom(var cd:char);
var
str:string;
Treiber:Ganzzahl;
Treiber:char;
i,temp:integer;
beginnen
drivers:=getlogicaldrives;
temp:=(1 und Treiber);
für i:=0 bis 26 do
beginnen
wenn temp=1 dann
beginnen
Treiber:=char(i+integer('a'));
str:=Treiber+':';
wenn getdrivetype(pchar(str))=drive_cdrom dann
beginnen
cd:=driver;
Ausfahrt;
Ende;
Ende;
drivers:=(drivers shr 1);
temp:=(1 und Treiber);
Ende;
Ende;
◇[DELPHI]Verschlüsselung und Entschlüsselung von Zeichen
function cryptstr(const s:string; stype: dword):string;
var
i: ganze Zahl;
fkey: Ganzzahl;
beginnen
Ergebnis:='';
Fallart von
0: Setpass;
beginnen
randomisieren;
fkey := random($ff);
for i:=1 to length(s) do
result := result+chr( ord(s[i]) xor i xor fkey);
Ergebnis := Ergebnis + char(fkey);
Ende;
1:getpass
beginnen
fkey := ord(s[length(s)]);
for i:=1 to length(s) - 1 do
result := result+chr( ord(s[i]) xor i xor fkey);
Ende;
Ende;
□◇[DELPHI] Simulierte Schlüssel an andere Anwendungen senden
var
h:THandle;
beginnen
h := FindWindow(nil, 'Application title');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);//F9-Taste senden
Ende;
□◇[DELPHI] Von DELPHI unterstütztes DAO-Datenformat
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);//Feld automatisch inkrementieren
□◇[DELPHI]DELPHI konfiguriert MS SQL 7- und BDE-Schritte
Der erste Schritt besteht darin, ODBC zu konfigurieren:
Richten Sie zunächst die Datenquelle in ODBC ein. Nach der Installation von SQL Server 7.0 sollten in ODBC zwei Elemente unter „System DSN“ vorhanden sein.
Datenquellen, eine ist MQIS und die andere ist LocalSever. Wählen Sie eine beliebige aus und klicken Sie auf die Schaltfläche „Ich kenne Ihr SQL7.0“.
Ist es auf dem lokalen Computer installiert? Wenn ja, fahren Sie direkt mit dem nächsten Schritt fort. Wenn nicht, füllen Sie die Serverspalte aus.
Server, fahren Sie dann mit dem nächsten Schritt fort und geben Sie die Anmelde-ID und das Kennwort ein (Anmelde-ID und Kennwort sind Benutzeroptionen in SQL7.0).
zentral gelegen).
Der zweite Schritt besteht darin, BDE zu konfigurieren:
Öffnen Sie die BDE von Delphi und klicken Sie auf „MQIS“ oder „LocalServer“. Sie werden zur Eingabe eines Benutzernamens und eines Kennworts aufgefordert
Der ODBC-Benutzername und das Passwort sind identisch, füllen Sie sie einfach aus.
Der dritte Schritt besteht darin, das Programm zu konfigurieren:
Wenn Sie TTable verwenden, wählen Sie MQIS oder LocalServer im Datenbanknamen von TTable aus und dann
Wählen Sie einfach „Sale“ in „TableName“ aus und ändern Sie dann „Active“ in „True“. Delphi öffnet ein Eingabeaufforderungsdialogfeld und gibt den Benutzer ein
Name und Passwort.
Wenn Sie TQuery verwenden, klicken Sie mit der rechten Maustaste auf TQuery und klicken Sie auf „SQL Builder“. Dies wird im Schnittstellenmodus konfiguriert.
SQL-Anweisung, oder füllen Sie die SQL-Anweisung in TQuerys SQL aus. Vergessen Sie nicht, Active in True zu ändern.
Es ist auch möglich, TQuery während des Betriebs zu konfigurieren. Weitere Informationen finden Sie in der Delphi-Hilfe.
□◇[DELPHI] Ruft den RGB-Wert eines bestimmten Punkts im Bild ab
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
rot,grün,blau:byte;
i:Ganzzahl;
beginnen
i:= image1.Canvas.Pixels[x,y];
Blau:= GetBValue(i);
Grün:= GetGValue(i):
Rot:= GetRValue(i);
Label1.Caption:=inttostr(Red);
Label2.Caption:=inttostr(Green);
Label3.Caption:=inttostr(Blue);
Ende;
□◇[DELPHI]Über die Zerlegung und Konvertierung von Datumsformaten
var Jahr, Monat, Tag: Wort; jetzt2: Tdatatime;
now2:=date();
decodedate(now2,year,month,day);
lable1.Text :=inttostr(year)+'year'+inttostr(month)+'month'+inttostr(day)+'day';
◇[DELPHI]So ermitteln Sie den aktuellen Netzwerkverbindungsmodus
Das Beurteilungsergebnis ist MODEM-, LAN- oder Proxy-Server-Modus.
verwendet Wininet;
Funktion ConnectionKind :boolean;
var-Flags: dword;
beginnen
Ergebnis := InternetGetConnectedState(@flags, 0);
wenn Ergebnis dann
beginnen
if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
beginnen
showmessage('Modem');
Ende;
if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
beginnen
showmessage('LAN');
Ende;
if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
beginnen
showmessage('Proxy');
Ende;
if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY dann
beginnen
showmessage('Modem beschäftigt');
Ende;
Ende;
Ende;
◇[DELPHI]So ermitteln Sie, ob eine Zeichenfolge eine gültige E-MAIL-Adresse ist
Funktion IsEMail(EMail: String): Boolean;
var s: String;ETpos: Integer;
beginnen
ETpos:= pos('@', EMail);
wenn ETpos > 1 dann
beginnen
s:= copy(EMail,ETpos+1,Length(EMail));
wenn (pos('.', s) > 1) und (pos('.', s) < Länge(n)) dann
Ergebnis:= true else Ergebnis:= false;
Ende
anders
Ergebnis:= false;
Ende;
◇[DELPHI] Stellen Sie fest, ob das System mit dem INTERNET verbunden ist
Die InetIsOffline-Funktion in URL.DLL muss eingeführt werden.
Die Funktionsdeklaration lautet:
function InetIsOffline(Flag: Integer): Boolean; external 'URL.DLL';
Anschließend können Sie die Funktion aufrufen, um festzustellen, ob das System mit dem INTERNET verbunden ist
if InetIsOffline(0) then ShowMessage('not connected!')
else ShowMessage('connected!');
Diese Funktion gibt TRUE zurück, wenn das lokale System nicht mit dem INTERNET verbunden ist.
Beigefügt:
Die meisten Systeme mit IE oder OFFICE97 verfügen über diese DLL zum Aufrufen.
InetIsOffline
BOOL InetIsOffline(
DWORD dwFlags,
);
◇[DELPHI]WAV-Dateien einfach abspielen und anhalten
verwendet mmsystem;
function PlayWav(const FileName: string): Boolean;
beginnen
Ergebnis := PlaySound(PChar(FileName), 0, SND_ASYNC);
Ende;
Prozedur StopWav;
var
Puffer: Array[0..2] of char;
beginnen
Puffer[0] := #0;
PlaySound(Buffer, 0, SND_PURGE);
Ende;
◇[DELPHI] Rufen Sie die BIOS-Informationen der Maschine ab
mit Memo1.Lines tun
beginnen
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))));
Ende;
◇[DELPHI] Laden Sie Dateien aus dem Internet herunter
verwendet UrlMon;
Funktion DownloadFile(Source, Dest: string): Boolean;
beginnen
versuchen
Ergebnis := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
außer
Ergebnis := Falsch;
Ende;
Ende;
if DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') dann
ShowMessage('Download erfolgreich')
else ShowMessage('Download fehlgeschlagen')
◇[DELPHI]Server-IP-Adresse auflösen
verwendet Winsock
Funktion IPAddrToName(IPAddr : String): String;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
beginnen
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then result:=StrPas(Hostent^.h_name) else result:='';
Ende;
◇[DELPHI] Rufen Sie die Verbindung in der Verknüpfung ab
function ExeFromLink(const linkname: string): string;
var
FDir,
Name,
ExeName: PChar;
z: ganze Zahl;
beginnen
ExeName:= StrAlloc(MAX_PATH);
FName:= StrAlloc(MAX_PATH);
FDir:= StrAlloc(MAX_PATH);
StrPCopy(FName, ExtractFileName(linkname));
StrPCopy(FDir, ExtractFilePath(linkname));
z:= FindExecutable(FName, FDir, ExeName);
wenn z > 32 dann
Ergebnis:= StrPas(ExeName)
anders
Ergebnis:= '';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
Ende;
◇[DELPHI]Steuern Sie die automatische Vervollständigung von TCombobox
{'Sorted'-Eigenschaft der TCombobox auf true }
var lastKey: Word; //globale Variable
//OnChange-Ereignis von TCombobox
procedure TForm1.AutoCompleteChange(Sender: TObject);
var
SearchStr: string;
retVal: Ganzzahl;
beginnen
SearchStr := (Sender as TCombobox).Text;
wenn lastKey <> VK_BACK dann // Rücktaste: VK_BACK oder $08
beginnen
retVal := (Sender as TCombobox).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
wenn retVal > CB_Err dann
beginnen
(Absender als TCombobox).ItemIndex := retVal;
(Absender als TCombobox).SelStart := Length(SearchStr);
(Absender als TCombobox).SelLength :=
(Length((Sender as TCombobox).Text) - Length(SearchStr));
end; // retVal > CB_Err
end; // lastKey <> VK_BACK
lastKey := 0; // lastKey zurücksetzen
Ende;
//OnKeyDown-Ereignis von TCombobox
procedure TForm1.AutoCompleteKeyDown(Sender: TObject; var Key: Word;
Schicht: TShiftState);
beginnen
lastKey := Schlüssel;
Ende;
◇[DELPHI]So löschen Sie ein Verzeichnis
Funktion EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :
Boolescher Wert;
var
SearchRec : TSearchRec;
Res: Ganzzahl;
beginnen
Ergebnis := Falsch;
Das Verzeichnis := NormalDir(Das Verzeichnis);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
versuchen
während Res = 0 do
beginnen
if (SearchRec.Name <> '.') und (SearchRec.Name <> '..') then
beginnen
if ((SearchRec.Attr und faDirectory) > 0) und Rekursiv
dann fang an
EmptyDirectory(TheDirectory + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
Ende
sonst beginnen
DeleteFile(PChar(TheDirectory + SearchRec.Name))
Ende;
Ende;
Res := FindNext(SearchRec);
Ende;
Ergebnis := True;
Endlich
FindClose(SearchRec.FindHandle);
Ende;
Ende;
◇[DELPHI]So berechnen Sie die Größe eines Verzeichnisses
function GetDirectorySize(const ADirectory: string): Integer;
var
Dir: TSearchRec;
Ret: Ganzzahl;
Pfad: string;
beginnen
Ergebnis := 0;
Pfad := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
wenn Ret <> NO_ERROR, dann beenden;
versuchen
while ret=NO_ERROR do
beginnen
inc(Ergebnis, Dir.Größe);
if (Dir.Attr in [faDirectory]) und (Dir.Name[1] <> '.') then
Inc(Result, GetDirectorySize(Path + Dir.Name + '/*.*'));
Ret := Sysutils.FindNext(Dir);
Ende;
Endlich
Sysutils.FindClose(Dir);
Ende;
Ende;
◇[DELPHI]So fügen Sie das Installationsprogramm zur Deinstallationsliste hinzu
Betreiben Sie die Registry wie folgt:
1. Erstellen Sie einen Primärschlüssel unter dem Schlüssel HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall mit einem beliebigen Namen.
BeispielHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. Geben Sie zwei Zeichenfolgenwerte unter HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall ein.
Die Namen dieser beiden Zeichenfolgenwerte sind spezifisch: DisplayName und UninstallString.
3. Weisen Sie den Wert der Zeichenfolge DisplayName dem Namen zu, der in der „Delete Application List“ angezeigt wird, z. B. „Aiming Uninstall one“;
Weisen Sie dem ausgeführten Löschbefehl die Zeichenfolge UninstallString zu, z. B. C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu"
◇[DELPHI]Abgefangene WM_QUERYEND-Nachricht zum Beenden der Sitzung
Typ
TForm1 = Klasse(TForm)
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;
procedure CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;
Privat
{Private Erklärungen}
öffentlich
{Öffentliche Erklärungen}
Ende;
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
beginnen
Showmessage('Computer wird gleich heruntergefahren');
Ende;
◇[DELPHI]Holen Sie sich Online-Nachbarn
Die Prozedur getnethood();//NT wird als Server verwendet und das Debuggen wird unter WIN98 durchgeführt.
var
a,i:integer;
Fehlercode:Ganzzahl;
netres:array[0..1023] of netresource;
enumhandle:thandle;
Aufzählungen:dword;
Puffergröße:dword;
s:string;
mylistitems:tlistitems;
mylistitem:tlistitem;
alldomain:tstrings;
begin //listcomputer ist eine Listenansicht zum Auflisten aller Computer; controlcenter ist ein Formular.
alldomain:=tstringlist.Create;
mit netres[0] beginnen
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomment :=nil;
lpprovider :=nil;
end; // Alle Felder abrufen
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
Wenn errcode=NO_ERROR, dann beginnen
Aufzählungen:=1024;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
Ende;
a:=0;
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
while (string(netres[a].lpprovider)<>'') und (errcode=NO_ERROR) tun dies
beginnen
alldomain.Add (netres[a].lpremotename);
a:=a+1;
Ende;
wnetcloseenum(enumhandle);
// Alle Computer abrufen
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.Clear;
for i:=0 to alldomain.Count-1 do
beginnen
mit netres[0] beginnen
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(alldomain[i]);
lpcomment :=nil;
lpprovider :=nil;
Ende;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
wenn errcode=NO_ERROR dann
beginnen
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
Ende;
a:=0;
while (string(netres[a].lpprovider)<>'') und (errcode=NO_ERROR) tun dies
beginnen
mylistitem :=mylistitems.Add;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
Ende;
wnetcloseenum(enumhandle);
Ende;
Ende;
◇[DELPHI] Rufen Sie das freigegebene Verzeichnis auf einem bestimmten Computer ab
Prozedur getsharefolder(const computername:string);
var
errcode,a:integer;
netres:array[0..1023] of netresource;
enumhandle:thandle;
Aufzählungen, Puffergröße: Dword;
s:string;
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist;
beginnen
mit netres[0] beginnen
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(computername);
lpcomment :=nil;
lpprovider :=nil;
end; // Holen Sie sich den Wurzelknoten
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
wenn errcode=NO_ERROR dann
beginnen
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
Ende;
wnetcloseenum(enumhandle);
a:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.Clear;
while (string(netres[a].lpprovider)<>'') und (errcode=NO_ERROR) tun dies
beginnen
mit mylistitems tun
beginnen
mylistitem:=add;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
Ende;
a:=a+1;
Ende;
Ende;
◇[DELPHI] Holen Sie sich die Seriennummer der Festplatte
var SerialNum: pdword; a, b: dword; Buffer: array [0..255] of char;
beginnen
if GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^);
Ende;
◇[DELPHI]MEMOs automatisches Umblättern
Prozedur ScrollMemo(Memo: TMemo; Richtung: char);
beginnen
Fallrichtung von
'd': beginnen
SendMessage(Memo.Handle, { HWND des Memo-Steuerelements }
WM_VSCROLL, { Windows-Nachricht }
SB_PAGEDOWN, { Scroll-Befehl }
0) { Nicht verwendet }
Ende;
'u': beginnen
SendMessage(Memo.Handle, { HWND des Memo-Steuerelements }
WM_VSCROLL, { Windows-Nachricht }
SB_PAGEUP, { Scroll-Befehl }
0); { Nicht verwendet }
Ende;
Ende;
Ende;
procedure TForm1.Button1Click(Sender: TObject);
beginnen
ScrollMemo(Memo1,'d'); //Seite nach oben
Ende;
procedure TForm1.Button1Click(Sender: TObject);
beginnen
ScrollMemo(Memo1,'u'); //Seite umblättern
Ende;
◇[DELPHI]Drücken Sie die Eingabetaste, um zur nächsten Position im DBGrid zu gelangen (Tabulatortaste).
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
beginnen
wenn Schlüssel = #13 dann
wenn DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 dann
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
anders
beginnen
Table1.next;
DBGrid1.Columns[0].field.FocusControl;
Ende;
Ende;
◇[DELPHI]So installieren Sie die Steuerung
Installationsmethode:
1. Für ein einzelnes Steuerelement Komponente -> Komponente installieren -> PAS- oder DCU-Datei -> Installieren
2. Für Steuerpakete mit *.dpk-Dateien: Datei -> Öffnen (wählen Sie *.dpk im Dropdown-Listenfeld aus) -> Installieren.
3. Für Steuerpakete mit *.dpl-Dateien wählen Sie „Pakete installieren“ -> „Hinzufügen“ -> „dpl-Dateiname“.
4. Wenn die obige Schaltfläche „Installieren“ ungültig ist, versuchen Sie es mit der Schaltfläche „Kompilieren“.
5. Wenn es sich um eine Laufzeitbibliothek handelt, fügen Sie sie zu runtimepackes unter „Pakete“ unter der Option hinzu.
Wenn beim Kompilieren die Meldung angezeigt wird, dass die Datei nicht gefunden werden kann, liegt das normalerweise daran, dass sich das Installationsverzeichnis des Steuerelements nicht im Lib-Verzeichnis von Delphi befindet. Es gibt zwei Methoden, um das Problem zu lösen:
1. Kopieren Sie die Originalinstallationsdateien in das Lib-Verzeichnis von Delphi.
2. Oder fügen Sie den ursprünglichen Codepfad des Steuerelements zum Verzeichnis Delphi Lib unter Tools -> Umgebungsoptionen hinzu.
◇[DELPHI] Verzeichnis vollständig löschen (deltree)
procedure TForm1.DeleteDirectory(strDir:String);
var
sr: TSearchRec;
FileAttrs: Integer;
strfilename:string;
strPth: string;
beginnen
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
wenn FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 dann
beginnen
if (sr.Attr und FileAttrs) = sr.Attr dann
beginnen
strfilename:=sr.Name;
if fileexists(strpth+'/'+strdir+'/'+strfilename) dann
deletefile(strpth+'/'+strdir+'/'+strfilename);
Ende;
while FindNext(sr) = 0 do
beginnen
if (sr.Attr und FileAttrs) = sr.Attr dann
beginnen
strfilename:=sr.name;
if fileexists(strpth+'/'+strdir+'/'+strfilename) dann
deletefile(strpth+'/'+strdir+'/'+strfilename);
Ende;
Ende;
FindClose(sr);
Removedir(strpth+'/'+strdir);
Ende;
Ende;
◇[DELPHI] Ruft die Zeilen- und Spalteninformationen des aktuellen Cursors des TMemo-Steuerelements in Tpoint ab
1.Funktion ReadCursorPos(SourceMemo: TMemo): TPoint;
var Punkt: TPoint;
beginnen
point.y := SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x := SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
Ergebnis := Punkt;
Ende;
2.LineLength:=SendMessage(memol.handle, EM – LINELENGTH, Cpos, 0); //Zeilenlänge
◇[DELPHI]Festplatten-Seriennummer lesen
Funktion GetDiskSerial(DiskChar: Char): string;
var
SerialNum: pdword;
a, b: dword;
Puffer: Array [0..255] von char;
beginnen
Ergebnis := "";
Wenn GetVolumeInformation (PChar (Disk CharCar+":/"), Puffer, Sizeof (Puffer), serialnum,
a, b, nil, 0) dann
Ergebnis: = inttoStr (serialnum^);
Ende;
◇ [Internet] Gemeinsame CSS umfassende Fähigkeiten
1. P: Erstgeschichte {Schriftgröße: 300%;
2. <Link rel = stylesheet href = "basicics
3. Ein Stylesheet einbetten
<Style type = "text/css" Media = Bildschirm>
<!--
@import URL (http://www.htmlhelp.com/style.css); // extern ein Stilblatt importieren
@import url (/stylesheets/punk.css); // wie oben
Körper {Hintergrund: URL (foo.gif) rot;
.Punk {Farbe: LIME;
#WDG97 {Schriftgröße: größer} // Siehe 6 für Referenzen.
->
</Style>
4. <P style = "color: rot; Schriftfamilie: 'New Century Schoolbook', Serif"> // Inline-Stil
<Span style = "Schriftfamilie: Arial"> Arial </span> // span akzeptiert Stil-, Klassen- und ID-Attribute
<Div class = note> <p> div kann Absätze, Titel, Tabellen und sogar andere Teile </p> </div> enthalten
5. <H1 class = Punk> Klasse Attribut </h1> // Siehe 3 für die Definition.
6. <P id = wdg97> id Attribut </p> // Siehe 3 für die Definition.
7. Eigenschaftsliste
Schriftstil: Schriftstil: [Normal | Italic |
Schriftstelle: [XX-Small |
Textdekoration: Textdekoration: [Unterstrahlung ||
Texttransformation: Text-Transformation: [Keine |
Hintergrundfarbe: Hintergrundfarbe: [<farben> |
Hintergrundbild: Hintergrund-Image: [<URLS> |
Linienhöhe: [Normal |.
Grenze: [Keine |
Float: [links |
8. Längeneinheit
Relative Einheiten:
EM (EM, die Höhe der Schriftart des Elements)
Ex (x-hohe Höhe, die Höhe des Buchstabens "x")
PX (Pixel, relativ zur Bildschirmauflösung)
Absolute Länge:
in (Zoll, 1 Zoll = 2,54 Zentimeter)
CM (Zentimeter, 1 Zentimeter = 10 Millimeter)
mm (Meter)
PT (Punkt, 1 Punkt = 1/72 Zoll)
PC (PA, 1 PA = 12 Punkte)
◇ [Delphi] kurze Schritte zur Herstellung von VCL
1. Erstellen Sie die Ereignisse der Komponentenattributmethode
(Erstellen Sie Bibliothekseinheiten, erben Sie als neue Typen, fügen Sie Eigenschaften, Methoden, Ereignisse, Registerkomponenten und Erstellen von Paketdateien hinzu)
2. Message -Verarbeitung
3. Exception -Handhabung
4. Teile sichtbar
◇ [Delphi] Laden der dynamischen Verbindungsbibliothek
Statische Belastung: Verfahrensname; externe 'lib.dll';
Dynamische Belastung: var Handle: Thandle;
Handle: = loadlibrary ('lib.dll');
Wenn Griff <> 0, dann
beginnen
{Dosen etwas}
Freiberufel (Griff);
Ende;
◇ [Delphi] Zeigervariablen und Adressen
var x, y: Integer; p:^Integer; // Zeiger auf die Ganzzahlvariable
x: = 10; // variable Zuordnung
P: =@x; // Die Adresse der Variablen x
y: = p^; // Zeiger p zu y zuweisen
@@ Procedure // Gibt die Speicheradresse der Prozessvariablen zurück
◇ [Delphi] bestimmt, ob der Charakter ein chinesischer Charakter ist
Bytetype ('Wie geht es dir haha', 1) = MbleadByte // ist das erste Zeichen
Bytetype ('Wie geht es dir haha', 2) = mbtrailByte // ist das zweite Zeichen
Bytetyp ('Wie geht es dir haha', 5) = Mbsinglebyte // kein chinesischer Charakter
◇ [Delphi] Memo -Positionierungsoperation
memo1.lines.delete (0) // Zeile löschen 1
memo1.sselStart: = 10 // 10 Bytes lokalisieren
◇ [Delphi] Erhalten Sie den internen Code des Doppel-Byte-Zeichens
Funktion getit (s: String): Ganzzahl;
beginnen
Ergebnis: = Byte (s [1]) * $ 100 + byte (s [2]);
Ende;
Verwendung: getit ('Berechnung') // $ bcc6, das Dezimales 48326 ist
◇ [Delphi] Anruf hinzufügen Datenspeicherverfahren hinzufügen
Das gespeicherte Verfahren ist wie folgt:
Verfahren addRecord erstellen (
record1 varchar (10)
record2 varchar (20)
)
als
beginnen
In TableName (Field1, Feld2) Werte einfügen (: record1,: record2)
Ende
Führen Sie die gespeicherte Prozedur aus:
ADRECORD ADRECTION ADRECORD ("Urrecord1", "Urrecord2") ausführen
◇ [Delphi] Speichern Sie Dateien in Blob -Feldern
Funktion BlobContentToString (const Dateiname: String): String;
beginnen
mit tFilESTREAM.Create (Dateiname, fMopenRead) tun
versuchen
SetLength (Ergebnis, Größe);
Read (Zeiger (Ergebnis)^, Größe);
Endlich
frei;
Ende;
Ende;
// Feld speichern
beginnen
if (opendialog1.execute) dann
beginnen
sFileName: = Opendialog1.FileName;
Adotable1.Edit;
adotable1.fieldbyName ('Visio'). Assstring: = BlobContentToString (Dateiname);
adotable1.post;
Ende;
◇ [Delphi] Kopieren Sie alle Dateien in die Zwischenablage
verwendet Shlobj, ActiveX, Clipbrd;
procedure tform1.copyToclipbrd (var Filename: String);
var
Fe: tformatetc;
Medium: tstgmedium;
Dropfiles: pdroppiles;
PFILE: PChar;
beginnen
Fe.cfformat: = cf_hdrop;
Fe.dWaspep: = dvaspect_content;
Fe.tymed: = tyMed_hglobal;
Medium.hglobal: = globalalloc (gmem_share oder gmem_zeroinit, sizeof (tdroppiles)+länge (Dateiname) +1);
Wenn Medium.hglobal <> 0 dann beginnen
Medium.TyMed: = tyMed_hglobal;
DropFiles: = GlobalLock (Medium.hglobal);
versuchen
DropFiles^.pfiles: = sizeof (tdroppiles);
DropFiles^.fwide: = false;
longint (pFile): = longint (DropFiles)+sizeof (tdropfiles);
StrpCopy (Pfile, Dateiname);
Inc (Pfile, Länge (Dateiname) +1);
Pfile^: = #0;
Endlich
GlobalUnlock (Medium.hglobal);
Ende;
Clipboard.setashandle (cf_hdrop, medium.hglobal);
Ende;
Ende;
◇ [Delphi] Listen Sie die aktuellen Systeme aus, das Prozesse auslaufte
Usestlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var lppe: tprocessentry32;
gefunden: boolean;
Hand: Thandle;
beginnen
Hand: = CreateToolHelp32Snapshot (Th32CS_Snapall, 0);
gefunden: = process32First (Hand, lppe);
während gefunden
beginnen
ListBox1.Items.add (strpas (lppe.szexefile));
gefunden: = process32Next (Hand, lppe);
Ende;
Ende;
◇ [Delphi] Erstellen Sie eine neue Tabelle Tabelle 2 basierend auf BDetable1
Tabelle 2: = ttable.create (nil);
versuchen
Tabelle2.Databasename: = Tabelle 1.Databasename;
Table2.fieldDefs.ssign (Tabelle 1.fieldDefs);
Table2.Indexdefs.ssign (Tabelle 1.Indexdefs);
Table2.tableName: = 'new_table';
Tabelle2.CreateTable ();
Endlich
Tabelle2.Free ();
Ende;
◇ [Delphi] Der beste Weg, um die DLL -Erstellung und -referenz zu verstehen
// Sehen Sie sich zuerst die DLL-Quelle (Datei-> Neu-> DLL) an
Bibliotheksprojekt1;
verwendet
Systeme, Klassen;
Funktion Addit (F: Ganzzahl; S: Ganzzahl): Ganzzahl; Export;
beginnen
makeasum: = f+s;
Ende;
Exporte
Addit;
Ende.
// rufen Sie an (in Ihrem Projekt)
Durchführung
Funktion Addit (F: Integer; S: Ganzzahl): Integer; weit; externe 'Projekt1'; // Deklaration
{Der Anruf ist Addit (2,4);
◇ [Delphi] lesen Sie die Größe des Programms selbst dynamisch
Funktion GesselfSize: Ganzzahl;
var
F: Datei der Bytes;
beginnen
fileMode: = 0;
ordnungsgemäß (f, application.exename);
Zurücksetzen (f);
Ergebnis: = FileSize (f); // Das Gerät ist Bytes
CloseFile (f);
Ende;
◇ [Delphi] BIOS -Informationen lesen
mit memo1.lines tun
beginnen
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))));
Ende;
◇ [Delphi] Erstellen Sie dynamisch MSSQL -Aliase
procedure TForm1.Button1Click(Sender: TObject);
var myList: tStringList;
beginnen
MyList: = tstringlist.create;
versuchen
mit myList tun
beginnen
Add ('sern name = 210.242.86.2');
Add ('Datenbankname = db');
Add ('Benutzername = sa');
Ende;
Session1.Addalias ('testsql', 'MSSQL', MyList);
Session1.SaveConFigFile;
Endlich
MyList.free;
Session1.Active: = True;
Datenbank1.Databasename: = 'db';
Datenbank1.Aliasname: = 'testsql';
Datenbank1.Loginprompt: = false;
Database1.params.Add ('Benutzername = SA');
Database1.params.add ('password =');
Datenbank1.Connected: = True;
Ende;
Ende;
procedure TForm1.Button2Click(Sender: TObject);
beginnen
Datenbank1.Connected: = false;
Session1.Deletalias ('testsql');
Ende;
◇ [Delphi] Hintergrundmusik spielen
Verwendet MMSystem
// Musik spielen
McISendString ('Open e: /1.MID -Sequenzer alias nn', '', 0, 0);
McISendString ('nn aus 0', '', 0, 0);
McISendString ('Close Animation', '', 0, 0);
Ende;
// Hör auf zu spielen
McISendString ('Open e: /1.MID -Sequenzer alias nn', '', 0, 0);
McIsendstring ('Stop nn', '', 0, 0);
McISendString ('Close Animation', '', 0, 0);
◇ [Delphi] Ein Beispielcode für Schnittstellen und Klassen
Typ {Schnittstelle und Klassenerklärung: Der Unterschied besteht darin, dass Datenmitglieder, nicht öffentliche Methoden und öffentliche Methoden das öffentliche Schlüsselwort in der Schnittstelle nicht verwenden}
Isample = interface // isample interface definieren
Funktion getString: String;
Ende;
Tsample = class (tinterfacedObject, isample)
öffentlich
Funktion getString: String;
Ende;
// Funktionsdefinition
Funktion TSample.GetString: String;
beginnen
Ergebnis: = 'Was Show ist';
Ende;
// Klassenobjekt aufrufen
var sample: tsample;
beginnen
Probe: = tsample.create;
ShowMessage (Sample.GetString+'Klassenobjekt!');
Probe.Free;
Ende;
// Schnittstelle aufrufen
var sampleInterface: isample;
Probe: Tsample;
beginnen
Probe: = tsample.create;
SampleInterface: = Beispiel; // Die Implementierung der Schnittstelle muss die Klasse verwenden
{Die obigen zwei Zeilen können auch als Beispielinterface ausgedrückt werden: = tsample.create;}
showMessage (sampleInterface.getString+'Schnittstelle!');
//sample.free; {unähnliche lokale Klassen, Klassen in der Schnittstelle werden automatisch freigegeben}}
SampleInterface: = nil; {Release -Schnittstellenobjekt}
Ende;
◇ [Delphi] Die Taskleiste sieht nicht wie ein geeignetes Programm aus
var
ExtendedStyle: Ganzzahl;
beginnen
Application.Initialize;
ExtendedStyle: = GetWindowlong (application.Handle, gwl_exStyle);
SetWindowlong (application.handle, gwl_exStyle, extendedStyle oder WS_EX_TOOLWINDOW und nicht WS_EX_APPWINDOW);
Application.CreateForm(TForm1, Form1);
Application.Run;
Ende.
◇ [Delphi] Alt+Strg+Del kann das Programm nicht sehen
Erklärung nach der Implementierung hinzufügen:
Funktion RegisterServiceProcess (DWProcessid, DWTYPE: Integer): Integer;
RegisterServiceProcess (GetCurrentProcessid, 1); // Hide
RegisterServiceProcess (getCurrentProcessid, 0); // Anzeige
◇ [Delphi] Optisches Antriebsymbol erkennen
var Drive: char;
Cdromid: Ganzzahl;
beginnen
für Laufwerk: = 'D' bis 'z' tun
beginnen
cdromid: = getDrivetype (pChar (Laufwerk+':/'));
Wenn cdromid = 5 dann ShowMessage ('Ihr CD-ROM-Laufwerk ist:'+Drive+'Disk!');
Ende;
Ende;
◇ [Delphi] Soundkarte erkennen
wenn uxgetnumdevs () <= 0 dann ShowMessage ('keine Soundcard gefunden!') sonst ShowMessage ('jede Soundkarte gefunden!');
◇ [Delphi] Zeichnen Sie das Streichraster in Zeichnen
Stringgrid.onDrawcell -Ereignis
mit Stringgrid1.canvas tun
Zeichnen (rect.left, rect.top, image1.picture.graphic);
◇ [SQL Server] Eine andere Möglichkeit, die gleiche Anweisung in SQL zu schreiben
Um beispielsweise alle Benutzer zu finden, deren Benutzername "C" enthält, können Sie verwenden
Verwenden Sie MyDatabase
Wählen Sie * aus Tabelle 1, wobei der Benutzername '%c%' wie "%c%"
Hier ist eine weitere Möglichkeit, die obige Funktion zu erfüllen:
Verwenden Sie MyDatabase
Wählen Sie * aus Tabelle 1, wobei Charindex ('C', Benutzername)> 0
Theoretisch hat diese Methode eine weitere Beurteilung als die vorherige Methode, dh> 0, aber dieser Urteilsverfahren ist der schnellste.
Für String und andere Operationen ist es keine große Sache, die Charindex -Funktion zu verwenden.
Die gefundenen Zeichen können wie folgt direkt in diesem Charindex verwendet werden:
Verwenden Sie MyDatabase
Wählen Sie * aus Tabelle 1, wobei Charindex ('%', Benutzername)> 0
Es kann auch geschrieben werden als:
Verwenden Sie MyDatabase
Wählen Sie * aus Tabelle 1, wobei Charindex (char (37), Benutzername)> 0
Der ASCII -Charakter ist %
◇ [Delphi] SQL zeigt mehrere Datenbanken/Tabellen an
Wählen Sie unterschiedliche A.Bianhao, a.xingming, B.gongzi aus "jianjie.dbf" a, "gongzi.dbf" b
Wo A. Bianhao = B.Bianhao
◇ [Delphi] RFC (Anfrage für Kommentare) verwandt
IETF (Internet Engineering Task Force) verwaltet RFC -Dokumente http://www.ietf.cnri.reston.va.us
RFC882: Message Header -Struktur
RFC1521: MIME Teil 1, Nachrichtenübertragungsmethode
RFC1945: Multimedia -Dokumentübertragungsdokumentation
◇ [Delphi] Verwendung von TnmuUpprocessor
var tream, überstream: tFileStream;
beginnen
Instreme: = tFilESTREAM.Create (infile.txt, fMopenRead);
überstream: = tFileStream (outfile.txt, fmcreate);
NMuUe.method: = uucode; {uUencode/decodode}
//NmuUe.method:=uumime; {Mime}
NMUUE.InputStream: = instrenm;
NMUUE.OutputStream: = überstream;
Nmuue.encode; {codierende Verarbeitung}
//NmuUe.decode; itercoding Processing}}
intream.free;
überstream.free;
Ende;
◇ [Delphi] TfileStream -Betrieb
// Lesen Sie die Zählbytes aus der aktuellen Position des Dateistroms zum Pufferpuffer
Funktion read (var puffer; count: longint): longint; override;
// Lesen Sie den Pufferpuffer in den Dateistrom ein
Funktion write (const buffer; count: longint): longint; override;
// Setzen Sie den aktuellen Lesen und schreiben Sie Zeiger des Dateistroms auf Offseting
Funktionsuche (Offset: Longint; Ursprung: Wort): Longint; Überschreibung;
Origin = {SofromBeginning, Sofromcurrent, Sofromend}
// Die Anzahl der aktuellen Position in einem anderen Dateistrom in die aktuelle Position im aktuellen Dateistrom kopieren
Funktionskopie (Quelle: TStream; Graf: Longint): Longint;
// Lesen Sie die angegebene Datei im Dateistrom
var myfstream: tfileStream;
beginnen
myfStream: = tFileStream.create (Opendialog1.FileName, fMopenRead);
Ende;
[JavaScript] Überprüfen Sie, ob der IE-Plug-in-Shockwave & QuickTime installiert ist
<script Language = "JavaScript">
var myplugin = navigator.plugins ["Shockwave"];
if (myplugin)
document.writeln ("Sie haben Shockwave installiert!")
anders
document.writeln ("Sie haben keine Shockwave installiert!")
</script> <br>
<script Language = "JavaScript">
var myplugin = navigator.plugins ["QuickTime"];
if (myplugin)
document.writeeln ("Sie haben QuickTime installiert!")
anders
document.writeln ("Sie haben keine QuickTime installiert!")
</script>
[Internet] Die Auswirkung der Referenzierung von Iframe in der Tabelle
<table cellpadding="0" cellpacing="0">
<tr>
<td> <ilayer id = "ad1" vissibility = "Hidden"> </ilayer> <nolayer> <Iframe src = "i: /jinhtml/zj/h21.htm" marginwidth = "0" marginheight = "110" Hspace Hspace Hspace Hspace Hspace " = "10" vspace = "20" Frameborder = "0" scrolling = "1"> </iframe> </nolayer> </td>
</tr>
</table>
◇ [Delphi] Webbrowser -Steuerungsfähigkeiten
1. Druckenfunktion erkennen
var eitel, vaout: olevariant;
Webbrowser.controlinterface.execwb (olecmdid_print, olecmdexecopt_dontpromptuser, eitel, vaout);
2. Webbrowser liest die Seite aus Stream
Funktion tform1.Loadfromstream (const istrream: tstream): hResult;
beginnen
Astream.seek (0, 0);
Ergebnis: = (webbrowser1.dokument als ipersiststreaminit) .load (tstreamadapter.create (astream));
Ende;
3. "About:" Mit Protokoll können Sie zu einer HTML -Zeichenfolge navigieren:
procedure tform1.loadhtmlstring (shtml: String);
VAR -Flaggen, TargetFramename, Postdata, Header: olevariante;
Webbrowser1.navigate ('über:' + shtml, Flags, targetFramename, Postdata, Header)
4. "Res:" Mit Protokoll können Sie zu einer HTML -Datei navigieren, die als Ressource gespeichert ist.
procedure tform1.loadhtmlresource;
VAR -Flaggen, TargetFramename, Postdata, Header: olevariante;
Webbrowser1.navigate ('res: //' + application.exename + '/myhtml', Flags, targetFramename, Postdata, Header)
Verwenden Sie BRCC32.exe, um Ressourcendateien (*.rc) zu erstellen.
Myhtml 23 "./html/myhtml.htm"
MoreHTML 23 "./HTML/MOREHTML.HTM"
{$ R html.res} //html.rc ist in html.res zusammengestellt
5. Speichern Sie die vollständige HTML -Datei
var
Htmldocument: ihtmldocument2;
Persistfile: ipersistfile;
beginnen
Htmldocument: = webbrowser1.document as ihtmldocument2;
Persistfile: = htmldocument as ipersistfile;
PersistFile.save (StringToolestern ('test.htm'), true);
während htmldocument.readystate <> 'vollständig' tun
Application.ProcessMessages;
Ende;
◇ [Delphi] Installieren Sie die Webbrowser -Steuerung (eingebettete IE -Steuerung)
Sie müssen zuerst sicherstellen Das ActiveX -Bedienfeld.
◇ [Delphi] Implementieren Sie Windows2000 Translucent Formular
Funktionsabschlusswindowattributes (hwnd: hwnd; crkey: longint; balpha: byte; dwflags: longint): longint;
procedure TForm1.FormCreate(Sender: TObject);
var l: longint;
beginnen
L: = GetWindowlong (Handle, GWL_EXStyle);
L: = l oder $ 80000;
SetWindowlong (Handle, gwl_exStyle, l);
SetlayeredWindowattributes (Handle, 0, 180, 2);
Ende;
◇ [Delphi] Das Programm zeigt Werbe -Webbrowser -Ladebilder an
VAR -Flagge, Rahmen, Pdata, Header: Olevariante;
beginnen
Webbrowser1.navigate ('http://www.chineall.com/images/logo.jpg', Flag, Frame, Pdata, Header)
Ende;
◇ [Delphi] Berechnen Sie die Größe eines Verzeichnisses
Funktion getDirectorySize (const adirectory: String): Integer;
var
DIR: tsearchrec;
Ret: Ganzzahl;
Pfad: String;
beginnen
Ergebnis := 0;
Pfad: = ExtractFilepath (Adirectory);
Ret: =
Wenn ret <> no_error dann
Ausfahrt;
versuchen
während ret = no_error tun
beginnen
Inc (Ergebnis, Dir.Size);
// Wenn es ein Verzeichnis ist und es nicht ist 'oder' .. ', mach einen rekursiven Anruf
if (dir.attr in [fadirectory]) und (dir.name [1] <> ''. ') dann
Inc (Ergebnis, getDirectorySize (Pfad + Dir.name + '/*.*'));
Ret: = sysutils.findnext (Dir);
Ende;
Endlich
Sysutils.findclose (Dir);
Ende;
Ende;
◇ [Delphi] Löschen Sie ein Verzeichnis
Funktion leerDirectory (Thedirectory: String; rekursiv: boolean):
Boolesche;
var
SearchRec: Tsearchrec;
Res: Ganzzahl;
beginnen
Ergebnis: = falsch;
TheDirectory: = NormalDir (TheDirectory);
Res: = findFirst (thedirectory + '*.*', FaanyFile, Searchrec);
versuchen
während res = 0 tun
beginnen
if (searchrec.name <> '.') und (Searchrec.name <> '..') dann
beginnen
if ((searchrec.attr und fadirectory)> 0) und rekursiv
dann fang an
LeerDirectory (thedirectory + searchrec.name, true);
REMED -Anleiter (pChar (thedirectory + searchrec.name));
Ende
sonst beginnen
DeleteFile (pChar (thedirectory + searchrec.name))
Ende;
Ende;
Res: = findNext (Searchrec);
Ende;
Ergebnis: = wahr;
Endlich
FindClose (Searchrec.findhandle);
Ende;
Ende;
◇ [Delphi] ADO -Programm veröffentlichen und ADO installieren
MDAC_TYP.Exe einmal ausführen. Diese Datei ist in Microsoft Windows, IE, Office und Visual Studio verfügbar.
Das Verzeichnis nach der Installation des Installationsprogramms entspricht dem im Programm festgelegten Verzeichnispfad. wird installiert.
◇ [Delphi] Abfangen von Windows -Systemnachrichten: WM_CLOSE -Nachricht
Prozedur WMCLOSE (var msg: tMessage); Nachricht WM_CLOSE;
procedure tmainForm.wmclose (var msg: tmessage);
beginnen
m_bclosenoquery: = false;
geerbt;
Ende;