PDA

View Full Version : سوال: مشکل در اجرای برنامه زیر



Layla.Download
پنج شنبه 29 دی 1390, 13:05 عصر
با سلام

من یه برنامه نوشتم که می خوام یک نام را بخواند، اگر این نام ، نام یکی از درایوهای سیستم بود، ظرفیت و شماره سریال اون درایو رو نمایش بده. ولی پیغام خطا میده . لطفا راهنمایی می کنید؟ کسی می تونه کمک کنه؟
البته امیدوارم مثل سیاسی و تروریسم محکوم به اعدام با این تاپیکم برخورد نشه (:افسرده:)




Procedure button١.click;
Var
Namedrive:string;
t: WORD;
S: Array [٠..١٠٠] of Char;
{‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐نﺁ ﺖﻴﻓﺮﻇ و ﻮﻳارد لﺎﻳﺮﺳ ﻩرﺎﻤﺷ ﺖﻬﺟ ﻒﻳﺮﻌﺗ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐}
RootPath: PChar;
VolName: Array [٠..٢٥٥] of Char;
SerialNumber: DWord;
MaxCLength: DWord;
FileSysFlag: DWord;
FileSysName: Array [٠..٢٥٥] of Char;
//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ﻳارد ﺖﻴﻓﺮﻇ‐‐‐‐‐‐‐‐‐‐‐ ‐
dn: PChar;
spc, bps, nfc, tnc: DWord;
Begin
Namedriver:=edit١.text;
t := GetLogicalDriveStrings(sizeof(S), S);
If (t = namedrive) Then
begin
Edit١.Text := StrPas(S + ٤*٢);
Showmessage (‘find drive’);
//‐‐‐‐‐‐‐‐‐‐‐ﻮﻳارد لﺎﻳﺮﺳ ﻩرﺎﻤﺷ‐‐‐‐‐‐‐‐‐
RootPath := PChar(Edit١.Text);
If (GetVolumeInformation(RootPath, VolName, ٢٥٥, @SerialNumber,
MaxCLength, FileSysFlag, FileSysName, ٢٥٥) = True) Then
Edit٢.Text := StrPas(@SerialNumber)
Else
Showmessage (‘ﺎﻄﺧ’)
//‐‐‐‐‐‐‐‐‐ﻮﻳارد ﺖﻴﻓﺮﻇ‐‐‐‐‐‐‐‐‐
dn := PChar(Edit١.Text);
If (GetDiskFreeSpace(dn, spc, bps, nfc, tnc) = True) Then
Begin
Edit٣.Text := IntToStr(spc);
Edit٤.Text := IntToStr(bps);
Edit٥.Text := IntToStr(nfc);
Edit٦.Text := IntToStr(tnc);
End
Else
Showmessage (‘ﺎﻄﺧ’);
end;
Else
Edit١.Text := 'ERROR';
End;

مرسی

سعید صابری
پنج شنبه 29 دی 1390, 13:25 عصر
البته امیدوارم مثل سیاسی و تروریسم محکوم به اعدام با این تاپیکم برخورد نشه (:افسرده:)
منظورتون چیه؟

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

Layla.Download
پنج شنبه 29 دی 1390, 13:30 عصر
Procedure button١.click;
Var
Namedrive:string;
t: WORD;
S: Array [٠..١٠٠] of Char;
{‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐نﺁ ﺖﻴﻓﺮﻇ و ﻮﻳارد لﺎﻳﺮﺳ ﻩرﺎﻤﺷ ﺖﻬﺟ ﻒﻳﺮﻌﺗ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐}
RootPath: PChar;
VolName: Array [٠..٢٥٥] of Char;
SerialNumber: DWord;
MaxCLength: DWord;
FileSysFlag: DWord;
FileSysName: Array [٠..٢٥٥] of Char;
//‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ ﻳارد ﺖﻴﻓﺮﻇ‐‐‐‐‐‐‐‐‐‐‐ ‐
dn: PChar;
spc, bps, nfc, tnc: DWord;
Begin
Namedriver:=edit١.text;
t := GetLogicalDriveStrings(sizeof(S), S);
If (t = namedrive) Then
begin
Edit١.Text := StrPas(S + ٤*٢);
Showmessage (‘find drive’);
//‐‐‐‐‐‐‐‐‐‐‐ﻮﻳارد لﺎﻳﺮﺳ ﻩرﺎﻤﺷ‐‐‐‐‐‐‐‐‐
RootPath := PChar(Edit١.Text);
If (GetVolumeInformation(RootPath, VolName, ٢٥٥, @SerialNumber,
MaxCLength, FileSysFlag, FileSysName, ٢٥٥) = True) Then
Edit٢.Text := StrPas(@SerialNumber)
Else
Showmessage (‘ﺎﻄﺧ’)
//‐‐‐‐‐‐‐‐‐ﻮﻳارد ﺖﻴﻓﺮﻇ‐‐‐‐‐‐‐‐‐
dn := PChar(Edit١.Text);
If (GetDiskFreeSpace(dn, spc, bps, nfc, tnc) = True) Then
Begin
Edit٣.Text := IntToStr(spc);
Edit٤.Text := IntToStr(bps);
Edit٥.Text := IntToStr(nfc);
Edit٦.Text := IntToStr(tnc);
End
Else
Showmessage (‘ﺎﻄﺧ’);
end;
Else
Edit١.Text := 'ERROR';
End;

Layla.Download
پنج شنبه 29 دی 1390, 14:39 عصر
کسی مشکل برنامه منو نمی دونه؟؟؟!؟؟!؟!؟؟!؟!

:ناراحت::افسرده:

سعید صابری
پنج شنبه 29 دی 1390, 18:37 عصر
اولیش اینه If (t = namedrive) Then
t از نوع word و namedrive از نوع رشته ای این دو تا را به این شکل نمی تونید استفاده کنید.البته از لحاظ املایی هم مشکل داره با کمک کامپایلر اطلاح کنید
ارورتون هم بگین بهتره

Mask
پنج شنبه 29 دی 1390, 18:43 عصر
برنامتون رو با چه نسخه دلفی مینویسید.
این کد سز تا پا مشکله.
نوع دلفی که باهاش کار میکنید رو بفرمایید تا یه نمونه براتون بنویسم.

MohsenB
چهارشنبه 05 بهمن 1390, 21:23 عصر
سلام

از روندش چیز زیادی نفهمیدم ولی شکل درستش که فکر کنم همین روند باشه اینجوری میشه:


Procedure TFORM1.button1click(Sender :TObject);
Var
Namedrive:string;
t: WORD;
S: Array [0..100] of Char;
RootPath: PChar;
VolName: Array [0..200] of Char;
SerialNumber: DWord;
MaxCLength: DWord;
FileSysFlag: DWord;
FileSysName: Array [0..200] of Char;
dn: PChar;
spc, bps, nfc, tnc: DWord;
Begin
Namedriver:=edit١.text;
t := GetLogicalDriveStrings(sizeof(S), S);
If (t = namedrive) Then
begin
Edit1.Text := StrPas(S + 4*2);
Showmessage ('find drive');
RootPath := PChar(Edit1.Text);
If (GetVolumeInformation(RootPath, VolName, 255, @SerialNumber,
MaxCLength, FileSysFlag, FileSysName, 255) = True) Then
Edit2.Text := StrPas(@SerialNumber)
Else
Showmessage ('ﺎﻄﺧ');
dn := PChar(Edit1.Text);
If (GetDiskFreeSpace(dn, spc, bps, nfc, tnc) = True) Then
Begin
Edit3.Text := IntToStr(spc);
Edit4.Text := IntToStr(bps);
Edit5.Text := IntToStr(nfc);
Edit6.Text := IntToStr(tnc);
End
Else
Showmessage ('ﺎﻄﺧ');
end
Else
Edit1.Text := 'ERROR';
end;


موفق باشید