زمان جاری : جمعه 14 اردیبهشت 1403 - 10:21 قبل از ظهر
نام کاربری : پسورد : یا عضویت | رمز عبور را فراموش کردم


سلام مهمان گرامي؛
مهمان گرامي، براي مشاهده تالار با امکانات کامل ميبايست از طريق ايــن ليـــنک ثبت نام کنيد


آیا میدانید؟ ایا میدانید :






تعداد بازدید 1896
نویسنده پیام
adminofanjoman آفلاین



ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15
نکات برنامه نویسی در دلفی
 



سلام دوستان



قصد داریم با کمک هم نکات جالب و کاربردی و یا پروسجرهای خاصی رو که داریم اینجا قرار بدیم تا همه استفاده کنند.



امیدوارم منو یاری کنید..

جمعه 26 آبان 1391 - 13:10
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 1 RE باز و بسته کردن سیدی درایو
با استفاده از این فانکشن میتونید در هر نوع سیدی درایوی رو باز و بسته کنید


کد:

uses
MMSystem;

procedure TForm1.Button1Click(Sender: TObject);
begin
{باز کردن سیدی رام: در صورت موفقیت 0 برمیگرداند}
** open CD-ROM drive; returns 0 if successfull }
mciSendString('set cdaudio door open wait', nil, 0, handle);

** close the CD-ROM drive; returns 0 if successfull }
{بستن سیدی رام: در صورت موفقیت 0 برمیگرداند}
mciSendString('set cdaudio door closed wait', nil, 0, handle);
end;



جمعه 26 آبان 1391 - 13:12
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 2 RE تغییر Resolution مونیتور
باید یک پروسیجر به شکل زیر بنویسیم:


کد:

procedure SetResolution(ResX, ResY: DWord);
var
lDeviceMode : TDeviceMode;
begin
EnumDisplaySettings(nil, 0, lDeviceMode);
lDeviceMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
lDeviceMode.dmPelsWidth :=ResX;
lDeviceMode.dmPelsHeight:=ResY;
ChangeDisplaySettings(lDeviceMode, 0);
end;


اگر اعداد غیر استاندارد برای Resolutoin مونیتور وارد کنید احتمال
آسیب رسیدن به مونیتور وجود دارد، از رزولوشن های استاندارد مثل 320*240 ،
640*480 ، 1024*768 و ... استفاده کنید.

جمعه 26 آبان 1391 - 13:14
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 3 RE تغییر Volume ویندوز
یک TrackBar در فرم خود قرار دهید و Max value را به 15 تغییر دهید و در رویداد OnChange آن کد زیر را قرار دهید:


کد:

procedure TForm1.TrackBar1Change(Sender: TObject);
var
Count, i: integer;
begin
Count := waveOutGetNumDevs;
for i := 0 to Count do
begin
waveOutSetVolume(i,longint(TrackBar1.Position*4369)*65536+longint(TrackBar1.Position*4369));
end;
end;



جمعه 26 آبان 1391 - 13:15
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 4 RE به دست آوردن لیست سیدی درایوهای متصل به کامپیوتر
یک فانشکن مینویسیم که یک استرینگ بر میگرداند:


کد:

Function GetCDList : String;
Var
I : Integer;
Drives: Integer;
Tmp : String;
begin
Drives := GetLogicalDrives;
Result := '';
// units A=0 to el Z=25
For I := 0 To 25 Do
If (((1 Shl I) And Drives)<>0) Then
Begin
Tmp := Char(65+I)+':\';
If (GetDriveType(PChar(Tmp))=DRIVE_CDROM) Then
Result := Result+Char(65+I);
End;
End;


نتیجه یک رشته است که لیست سیدی درایوها را بترتیب نشان میدهد

جمعه 26 آبان 1391 - 13:16
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 5 RE از بین بردن یک Task در ویندوز
هر نوع برنامه اجرا شده ای رو که پسوند .Exe دارد، از لیست Task Manager ویندوز پاک کنید.:49:



مثلا:


کد:

KillTask('notepad.exe');
KillTask('iexplore.exe'); }



کد:

uses
Tlhelp32, Windows, SysUtils;

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);

while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,
FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;



جمعه 26 آبان 1391 - 13:17
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 6 RE روش چرخاندن یک نقطه در فضای دو بعدی حول یک نقطه دوبعدی دیگر:

کد:

const
PIDiv180 = 0.017453292519943295769236907684886;

procedure Rotate(RotAng: Double; x, y, ox, oy: Double; var Nx, Ny: Double);
begin
Rotate(RotAng, x - ox, y - oy, Nx, Ny);
Nx := Nx + ox;
Ny := Ny + oy;
end;
(* End Of Rotate Cartesian Point About Origin *)


procedure Rotate(RotAng: Double; x, y: Double; var Nx, Ny: Double);
var
SinVal: Double;
CosVal: Double;
begin
RotAng := RotAng * PIDiv180;
SinVal := Sin(RotAng);
CosVal := Cos(RotAng);
Nx := x * CosVal - y * SinVal;
Ny := y * CosVal + x * SinVal;
end;



جمعه 26 آبان 1391 - 13:18
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 7 RE Screen Shots
با استفاده از این کد میتوانید تصویر Screen را در یک فایل Bitmap ذخیره
نمائید. اگر نمیخواهید از یک برنامه فعال دلفی استفاده کنید میتوانید یک
'Application.Minimize;' در Beginning پروسیجر وارد کنید.




کد:

uses
Windows, Graphics, Forms;

procedure TForm1.Button1Click(Sender: TObject);
var
DC: HDC;
Canvas: TCanvas;
MyBitmap: TBitmap;
begin
Canvas := TCanvas.Create;
MyBitmap := TBitmap.Create;
DC := GetDC(0);

try
Canvas.Handle := DC;
with Screen do
begin
** detect the actual height and with of the screen }
MyBitmap.Width := Width;
MyBitmap.Height := Height;

** copy the screen content to the bitmap }
MyBitmap.Canvas.CopyRect(Rect(0, 0, Width, Height), Canvas,
Rect(0, 0, Width, Height));
** stream the bitmap to disk }
MyBitmap.SaveToFile('c:\windows\desktop\screen.bmp');
end;

finally
** free memory }
ReleaseDC(0, DC);
MyBitmap.Free;
Canvas.Free
end;
end;



جمعه 26 آبان 1391 - 13:19
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 8 RE محاسبه لگاریتم با پایه متغیر

کد:

function Log(x, b: Real): Real;
begin
Result := ln(x) / ln(b);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('%f', [Log(10, 10)]));
end;



جمعه 26 آبان 1391 - 13:21
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 9 RE ضرب اعداد صحیح بزرگ

کد:

type
IntNo = record
Low32, Hi32: DWORD;
end;

function Multiply(p, q: DWORD): IntNo;
var
x: IntNo;
begin
asm
MOV EAX,[p]
MUL [q]
MOV [x.Low32],EAX
MOV [x.Hi32],EDX
end;
Result := x
end;



var
r: IntNo;
begin
r := Multiply(40000000, 80000000);
ShowMessage(IntToStr(r.Hi32) + ', ' + IntToStr(r.low32))
end;



جمعه 26 آبان 1391 - 13:22
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 10 RE محاسبه فاکتوریل یک عدد

کد:

function FacIterative(n: Word): Longint;
var
f: LongInt;
i: Integer;
begin
f := 1;
for i := 2 to n do f := f * i;
Result := f;
end;



کد:

function FacRecursive(n: Word): LongInt;
begin
if n > 1 then
Result := n * FacRecursive(n-1)
else
Result := 1;
end;



جمعه 26 آبان 1391 - 13:24
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 11 RE محاسبه معکوس یک ماتریس

کد:

type
RCOMat = array of array of Extended;

var
DimMat: integer;

procedure InvertMatrix(var aa: RCOMat);
var
numb, nula1, ipiv, indxr, indxc: array of Integer;
i, j, l, kod, jmax, k, ll, icol, irow: Integer;
amax, d, c, pomos, big, dum, pivinv: Double;
ind: Boolean;
begin
for j := 0 to Pred(DimMat) do ipiv[j] := 0;

irow := 1;
icol := 1;
for i := 0 to Pred(DimMat) do
begin
big := 0;

for j := 0 to Pred(DimMat) do
begin
if (ipiv[j] <> 1) then
begin
for k := 0 to Pred(DimMat) do
begin
if (ipiv[k] = 0) then
if (Abs(aa[j, k]) >= big) then
begin
big := Abs(aa[j, k]);
irow := j;
icol := k;
end
else;
end;
end;
end;

ipiv[icol] := ipiv[icol] + 1;
if (irow <> icol) then
begin
for l := 0 to Pred(DimMat) do
begin
dum := aa[irow, l];
aa[irow, l] := aa[icol, l];
aa[icol, l] := dum;
end;
for l := 0 to Pred(DimMat) do
begin
dum := aa[irow + DimMat + 1, l];
aa[irow + DimMat + 1, l] := aa[icol + DimMat + 1, l];
aa[icol + DimMat + 1, l] := dum;
end;
end;
indxr := irow;
indxc := icol;
if (aa[icol, icol] = 0) then;
pivinv := 1.0 / aa[icol, icol];
aa[icol, icol] := 1.0;
for l := 0 to Pred(DimMat) do aa[icol, l] := aa[icol, l] * pivinv;
for l := 0 to Pred(DimMat) do aa[icol + DimMat + 1, l] :=
aa[icol + DimMat + 1, l] * pivinv;
for ll := 0 to Pred(DimMat) do
begin
if (ll <> icol) then
begin
dum := aa[ll, icol];
aa[ll, icol] := 0.0;
for l := 0 to Pred(DimMat) do aa[ll, l] := aa[ll, l] - aa[icol, l] * dum;
for l := 0 to Pred(DimMat) do aa[ll + DimMat + 1, l] :=
aa[ll + DimMat + 1, l] - aa[icol + DimMat + 1, l] * dum;
end;
end;
end;

for l := Pred(DimMat) downto 0 do
begin
if (indxr[l] <> indxc[l]) then
begin
for k := 0 to Pred(DimMat) do
begin
dum := aa[k, indxr[l]];
aa[k, indxr[l]] := aa[k, indxc[l]];
aa[k, indxc[l]] := dum;
end;
end;
end;
end;



جمعه 26 آبان 1391 - 13:24
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 12 RE تبدیل یک عدد هگزادسیمال (مبتای 16) به باینری (مبنای 2)

کد:

function HexToBin(Hexadecimal: string): string;
const
BCD: array [0..15] of string =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: integer;
begin
for i := Length(Hexadecimal) downto 1 do
Result := BCD[StrToInt('$' + Hexadecimal)] + Result;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(HexToBin('FFA1'));
// Returns 1111111110100001
end;



جمعه 26 آبان 1391 - 13:25
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 13 RE تغییر وضوح یک عکس Jpg

کد:

procedure GetResJpg(JPGFile: string);
const
BufferSize = 50;
var
Buffer: string;
Index: integer;
FileStream: TFileStream;
HorzRes, VertRes: Word;
DP: Byte;
Measure: string;
begin
FileStream := TFileStream.Create(JPGFile,
fmOpenReadWrite);
try
SetLength(Buffer, BufferSize);
FileStream.Read(buffer[1], BufferSize);
Index := Pos('JFIF' + #$00, buffer);
if Index > 0 then
begin
FileStream.Seek(Index + 6, soFromBeginning);
FileStream.Read(DP, 1);
case DP of
1: Measure := 'DPI'; //Dots Per Inch
2: Measure := 'DPC'; //Dots Per Cm.
end;
FileStream.Read(HorzRes, 2); // x axis
HorzRes := Swap(HorzRes);
FileStream.Read(VertRes, 2); // y axis
VertRes := Swap(VertRes);
end
finally
FileStream.Free;
end;
end;

procedure SetResJpg(name: string; dpix, dpiy: Integer);
const
BufferSize = 50;
DPI = 1; //inch
DPC = 2; //cm
var
Buffer: string;
index: INTEGER;
FileStream: TFileStream;
xResolution: WORD;
yResolution: WORD;
_type: Byte;
begin
FileStream := TFileStream.Create(name,
fmOpenReadWrite);
try
SetLength(Buffer, BufferSize);
FileStream.Read(buffer[1], BufferSize);
index := POS('JFIF' + #$00, buffer);
if index > 0
then begin
FileStream.Seek(index + 6, soFromBeginning);
_type := DPI;
FileStream.write(_type, 1);
xresolution := swap(dpix);
FileStream.write(xresolution, 2);
yresolution := swap(dpiy);
FileStream.write(yresolution, 2);
end
finally
FileStream.Free;
end;
end;



جمعه 26 آبان 1391 - 13:26
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 14 RE اعمال ***** Emboss روی یک تصویر

کد:

procedure Emboss(ABitmap : TBitmap; AMount : Integer);
var
x, y, i : integer;
p1, p2: PByteArray;
begin
for i := 0 to AMount do
begin
for y := 0 to ABitmap.Height-2 do
begin
p1 := ABitmap.ScanLine[y];
p2 := ABitmap.ScanLine[y+1];
for x := 0 to ABitmap.Width do
begin
p1[x*3] := (p1[x*3]+(p2[(x+3)*3] xor $FF)) shr 1;
p1[x*3+1] := (p1[x*3+1]+(p2[(x+3)*3+1] xor $FF)) shr 1;
p1[x*3+2] := (p1[x*3+1]+(p2[(x+3)*3+1] xor $FF)) shr 1;
end;
end;
end;
end;



جمعه 26 آبان 1391 - 13:27
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 15 RE بدست آوردن لیست کاربران موجود در شبکه Remote

کد:

unit GetUser;

interface

uses
Windows
, Messages
, SysUtils
, Dialogs;

type
TServerBrowseDialogA0 = function(hwnd: HWND; pchBuffer: Pointer;
cchBufSize: DWORD): bool;
stdcall;
ATStrings = array of string;


procedure Server(const ServerName: string);
function ShowServerDialog(AHandle: THandle): string;


implementation

uses Client, ClientSkin;

procedure Server(const ServerName: string);
const
MAX_NAME_STRING = 1024;
var
userName, domainName: array[0..MAX_NAME_STRING] of Char;
subKeyName: array[0..MAX_PATH] of Char;
NIL_HANDLE: Integer absolute 0;
Result: ATStrings;
subKeyNameSize: DWORD;
Index: DWORD;
userNameSize: DWORD;
domainNameSize: DWORD;
lastWriteTime: FILETIME;
usersKey: HKEY;
sid: PSID;
sidType: SID_NAME_USE;
authority: SID_IDENTIFIER_AUTHORITY;
subAuthorityCount: BYTE;
authorityVal: DWORD;
revision: DWORD;
subAuthorityVal: array[0..7] of DWORD;


function getvals(s: string): Integer;
var
i, j, k, l: integer;
tmp: string;
begin
Delete(s, 1, 2);
j := Pos('-', s);
tmp := Copy(s, 1, j - 1);
val(tmp, revision, k);
Delete(s, 1, j);
j := Pos('-', s);
tmp := Copy(s, 1, j - 1);
val('$' + tmp, authorityVal, k);
Delete(s, 1, j);
i := 2;
s := s + '-';
for l := 0 to 7 do
begin
j := Pos('-', s);
if j > 0 then
begin
tmp := Copy(s, 1, j - 1);
val(tmp, subAuthorityVal[l], k);
Delete(s, 1, j);
Inc(i);
end
else
break;
end;
Result := i;
end;
begin
setlength(Result, 0);
revision := 0;
authorityVal := 0;
FillChar(subAuthorityVal, SizeOf(subAuthorityVal), #0);
FillChar(userName, SizeOf(userName), #0);
FillChar(domainName, SizeOf(domainName), #0);
FillChar(subKeyName, SizeOf(subKeyName), #0);
if ServerName <> '' then
begin
usersKey := 0;
if (RegConnectRegistry(PChar(ServerName), HKEY_USERS, usersKey) <> 0) then
Exit;
end
else
begin
if (RegOpenKey(HKEY_USERS, nil, usersKey) <> ERROR_SUCCESS) then
Exit;
end;
Index := 0;
subKeyNameSize := SizeOf(subKeyName);
while (RegEnumKeyEx(usersKey, Index, subKeyName, subKeyNameSize,
nil, nil, nil, @lastWriteTime) = ERROR_SUCCESS) do
begin
if (lstrcmpi(subKeyName, '.default') <> 0) and (Pos('Classes', string(subKeyName)) = 0) then
begin
subAuthorityCount := getvals(subKeyName);
if (subAuthorityCount >= 3) then
begin
subAuthorityCount := subAuthorityCount - 2;
if (subAuthorityCount < 2) then subAuthorityCount := 2;
authority.Value[5] := PByte(@authorityVal)^;
authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^;
authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^;
authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^;
authority.Value[1] := 0;
authority.Value[0] := 0;
sid := nil;
userNameSize := MAX_NAME_STRING;
domainNameSize := MAX_NAME_STRING;
if AllocateAndInitializeSid(authority, subAuthorityCount,
subAuthorityVal[0], subAuthorityVal[1], subAuthorityVal[2],
subAuthorityVal[3], subAuthorityVal[4], subAuthorityVal[5],
subAuthorityVal[6], subAuthorityVal[7], sid) then
begin
if LookupAccountSid(PChar(ServerName), sid, userName, userNameSize,
domainName, domainNameSize, sidType) then
begin
setlength(Result, Length(Result) + 1);
Result[Length(Result) - 1] := string(domainName) + '\' + string(userName);

// Hier kann das Ziel eingetragen werden
Form1.label2.Caption := string(userName);
form2.label1.Caption := string(userName);
end;
end;
if Assigned(sid) then FreeSid(sid);
end;
end;
subKeyNameSize := SizeOf(subKeyName);
Inc(Index);
end;
RegCloseKey(usersKey);
end;


function ShowServerDialog(AHandle: THandle): string;
var
ServerBrowseDialogA0: TServerBrowseDialogA0;
LANMAN_DLL: DWORD;
buffer: array[0..1024] of char;
bLoadLib: Boolean;
begin
bLoadLib := False;
LANMAN_DLL := GetModuleHandle('NTLANMAN.DLL');
if LANMAN_DLL = 0 then
begin
LANMAN_DLL := LoadLibrary('NTLANMAN.DLL');
bLoadLib := True;
end;
if LANMAN_DLL <> 0 then
begin @ServerBrowseDialogA0 := GetProcAddress(LANMAN_DLL, 'ServerBrowseDialogA0');
DialogBox(HInstance, MAKEINTRESOURCE(101), AHandle, nil);
ServerBrowseDialogA0(AHandle, @buffer, 1024);
if buffer[0] = '\' then
begin
Result := buffer;
end;
if bLoadLib = True then
FreeLibrary(LANMAN_DLL);
end;
end;


end.



جمعه 26 آبان 1391 - 13:28
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 16 RE ارسال پیام در ICQ

کد:

var
Form1: TForm1;
csend: string;

implementation

**$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
cSend := 'POST http://wwp.icq.com/scripts/WWPMsg.dll HTTP/2.0' + chr(13) + chr(10);
cSend := cSend + 'Referer: http://wwp.mirabilis.com' + chr(13) + chr(10);
cSend := cSend + 'User-Agent: Mozilla/4.06 (Win95; I)' + chr(13) + chr(10);
cSend := cSend + 'Connection: Keep-Alive' + chr(13) + chr(10);
cSend := cSend + 'Host: wwp.mirabilis.com:80' + chr(13) + chr(10);
cSend := cSend + 'Content-type: application/x-www-form-urlencoded' + chr(13) + chr(10);
cSend := cSend + 'Content-length:8000' + chr(13) + chr(10);
cSend := cSend + 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*' +
chr(13) + chr(10) + chr(13) + chr(10);
cSend := cSend + 'from=' + edit1.Text + ' &fromemail=' + edit2.Text +
' &fromicq:110206786' + ' &body=' + memo1.Text + ' &to=' + edit3.Text + '&Send=';
clientsocket1.Active := True;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
clientsocket1.Socket.SendText(csend);
clientsocket1.Active := False;
end;



جمعه 26 آبان 1391 - 13:28
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 17 RE لیست تمام فایلهای موجود در یک دایرکتوری

کد:

procedure ListFileDir(Path: string; FileList: TStrings);
var
SR: TSearchRec;
begin
if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
begin
repeat
if (SR.Attr <> faDirectory) then
begin
FileList.Add(SR.Name);
end;
until FindNext(SR) <> 0;
FindClose(SR);
end;
end;
--------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir('C:\Tarfandestan\', ListBox1.Items);
end;



جمعه 26 آبان 1391 - 13:29
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 18 RE تغییر نام یک دایرکتوری

کد:

uses
ShellApi;

procedure RenameDir(DirFrom, DirTo: string);
var
shellinfo: TSHFileOpStruct;
begin
with shellinfo do
begin
Wnd := 0;
wFunc := FO_RENAME;
pFrom := PChar(DirFrom);
pTo := PChar(DirTo);
fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or
FOF_SILENT or FOF_NOCONFIRMATION;
end;
SHFileOperation(shellinfo);
end;

-----------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
begin
RenameDir('C:\Tarfandestan', 'C:\iruni');
end;



جمعه 26 آبان 1391 - 13:30
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر
adminofanjoman آفلاین




ارسال‌ها : 99
عضویت: 13 /8 /1391
تشکر شده : 15

پاسخ : 19 RE پاک کردن برنامه توسط خودش بعد از اجرای آن

کد:

procedure DeleteEXE;

function GetTmpDir: string;
var
pc: PChar;
begin
pc := StrAlloc(MAX_PATH + 1);
GetTempPath(MAX_PATH, pc);
Result := string(pc);
StrDispose(pc);
end;

function GetTmpFileName(ext: string): string;
var
pc: PChar;
begin
pc := StrAlloc(MAX_PATH + 1);
GetTempFileName(PChar(GetTmpDir), 'uis', 0, pc);
Result := string(pc);
Result := ChangeFileExt(Result, ext);
StrDispose(pc);
end;

var
batchfile: TStringList;
batchname: string;
begin
batchname := GetTmpFileName('.bat');
FileSetAttr(ParamStr(0), 0);
batchfile := TStringList.Create;
with batchfile do
begin
try
Add(':Label1');
Add('del "' + ParamStr(0) + '"');
Add('if Exist "' + ParamStr(0) + '" goto Label1');
Add('rmdir "' + ExtractFilePath(ParamStr(0)) + '"');
Add('del ' + batchname);
SaveToFile(batchname);
ChDir(GetTmpDir);
ShowMessage('Uninstalling program...');
WinExec(PChar(batchname), SW_HIDE);
finally
batchfile.Free;
end;
Halt;
end;
end;



جمعه 26 آبان 1391 - 13:31
نقل قول این ارسال در پاسخ گزارش این ارسال به یک مدیر



برای ارسال پاسخ ابتدا باید لوگین یا ثبت نام کنید.


پرش به انجمن :


تماس با ما | نکات برنامه نویسی در دلفی | بازگشت به بالا | پیوند سایتی RSS