PDA

View Full Version : سوال: شماره گذاری دایرکتوری از داخل برنامه



Delphi7_love
پنج شنبه 28 مرداد 1389, 17:40 عصر
میخوام یه پوشه کنار برنامه داشته باشم که مثل بانک که یکی یکی به شمارنده اضافه میکنیم و یه رکورد جدید ثبت میکنیم بتونیم در مواقع دلخواه داخل این پوشه از 1 تا ... پوشه ایجاد کنم و داخل این پوشه ها اطلاعات بریزیم . این امر چگونه امکان پذیر است ؟

Felony
پنج شنبه 28 مرداد 1389, 22:18 عصر
یه نمونه کد براتون نوشتم :
var
Path, LastFolder: String;
Search: TSearchRec;
Int_Folder: Byte;
begin
Path:= ExtractFilePath(Application.ExeName) + 'Test\';
if FindFirst(Path + '*.*', faDirectory, Search)= 0 then
repeat
LastFolder:= Search.Name;
until (FindNext(Search)<> 0);
Int_Folder:= StrToIntDef(LastFolder, 0);
MkDir(Path + IntToStr(Int_Folder + 1));
end;

Delphi7_love
شنبه 30 مرداد 1389, 10:39 صبح
سلام عالی بود
یه توضیح در مورد عملکرد هر خط میخوام که بدونم چی میشه
ممنون

Felony
شنبه 30 مرداد 1389, 11:27 صبح
Path:= ExtractFilePath(Application.ExeName) + 'Test\';
این بخش که متغییر Path رو با آدرس برنامه + پوشه Test مقدار دهی میکنه .


if FindFirst(Path + '*.*', faDirectory, Search)= 0 then
repeat
LastFolder:= Search.Name;
until (FindNext(Search)<> 0);
این بخش به دنبال تمام زیر پوشه های موجود تو مسیر path میگرده و هر بار که پوشه ای پیدا کرد اسمش رو به متغییر LastFolder اختصاص میده ، این کار تا زمام اتمام پیدا کردن پوشه ها ادامه پیدا میکنه ( با این توضیح پس آخرین پوشه وقتی پیدا میشه اسمش به متغییر LastFolder اختصاص پیدا میکنه و برنامه از این قسمت کد به بیرون پرش میکنه .


Int_Folder:= StrToIntDef(LastFolder, 0);
در این قسمت نام آخرین پوشه ( LastFolder ) به یک عدد صحیح تبدیل میشه تا بتونیم بهش یک واحد اضافه کنیم و پوشه بعدی رو بسازیم ، از تابع StrToIntDef هم استفاده کردیم تا اگر نام آخرین پوشه عدد نبود مثلا Ali بود برنامه Exception نده و به صورت پیش فرض عدد 0 رو در نظر بگیره .


MkDir(Path + IntToStr(Int_Folder + 1));
در این قسمت هم به عددی که در خط قبلی به دست آوردیم ( آخرین پوشه ) یک واحد اضافه میکنیم و یه پوشه با نام اون در همون مسیر اولیه ( Path ) میسازیم .