ورود

View Full Version : مشکل در استفاده از فرمان copydir



amirtofighi
چهارشنبه 24 شهریور 1389, 21:27 عصر
باسلام
من برای کپی گرفتن از بانک اطلاعاتی نرم افزار از این دستور استفاده میکنم:


copydir(ExtractFilePath(Application.ExeName)+'tabl e\',self.DirectoryListBox1.Directory);که DirectoryListBox1 مسیر پوشه مقصد رو مشخص میکنه و فایل هایی که میخوام کپی کنم تو پوشه table هستن
ولی مشکل اینجاست که روی کامپیوتری که برنامه توش نوشته شده مشکلی پیش نمیاد ولی وقتی روی سیستم دیگه ای امتحان میکنم این خطا رو میده:

Can not copy file:can not read from source file or disk
میشه منو راهنمایی کنید
مرسی

amirtofighi
پنج شنبه 25 شهریور 1389, 14:03 عصر
دوستان خواهشا کمک کنید
کارم گیره

amirtofighi
پنج شنبه 25 شهریور 1389, 21:17 عصر
از همه دوستان عزیز که کمکم کردن واقعا ممنونم!!!!!!!!!!!!!!!!!!!
حداقل میتونین بهم بگین که آیا به سیستم عامل بستگی داره؟
چون من تو ویندوز 7 برنامه رو نوشتم و جواب میده ولی تو ویندوز XP که امتحان کردم به مشکل بر خوردم
در ضمن من از این فانکشن هم استفاده کردم ولی همون خطا رو داد:


function CopyDir(const fromDir, toDir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_COPY;
fFlags := FOF_FILESONLY;
pFrom := PChar(fromDir + #0);
pTo := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;

Felony
جمعه 26 شهریور 1389, 06:30 صبح
قبل از شروع عملیات کپی با تابع DirectoryExists وجود دایرکتوری مورد نظرتون رو بررسی کنید و در صورت عدم وجود یک پیغم صادر کنید :
if DirectoryExists() then
CopyDir(ExtractFilePath(Application.ExeName)+'tabl e\', Self.DirectoryListBox1.Directory);
else
ShowMessage('Can not find source directory');

اگر کد بالا پیغام رو نشون داد ، 100% مشکلی در آدرس دهی شما هست .

amirtofighi
جمعه 26 شهریور 1389, 09:42 صبح
مرسی از جوابتون ولی یه نکته ای هست
اون اینکه تو ویندوز 7 مشکل نداره ولی تو xp مشکل ایجاد میشه
حتی یه نکته جالبتر اینکه رو یه کامپیوتر دیگه که اونم xp بود ، وقتی برنامه رو رو درایو c ریختم و اجراش کردم پیام خطا داد ولی وقتی بردمش تو درایو d مشکل حل شد!
حالا این چیزی که شما گفتین رو امتحان میکنم ببینم مشکل از آرس دهیه یا نه
مرسی

Felony
جمعه 26 شهریور 1389, 09:50 صبح
مطمئن هستید که پوشه Table کنار برنامتون بوده ؟

amirtofighi
جمعه 26 شهریور 1389, 10:07 صبح
بله صد در صد
راستی به نظرتون اون اسلشی '/' که کنار table گذاشتم مشکل ساز نیست؟
چون من موقع شروع برنامه کد

Application.BiDiKeyboard := '00000429';
رو برای فارسی کردن صفحه کلید میدم و میترسم تو xp این اسلش رو بیاره اول آدرس و مثلا
c:/table
بشه
c:/table/
نظرتون چیه؟

Felony
جمعه 26 شهریور 1389, 10:14 صبح
با کد زیر آدرس رو نمایش بده و ببین درسته یا نه :

ShowMessage(ExtractFilePath(Application.ExeName)+' table\');

amirtofighi
جمعه 26 شهریور 1389, 10:24 صبح
اینکارو کردم و '\' رو آورد اول آدرس
حالا من اون کد فارسی کردن صفحه کلید رو بر میدارم ببینم درست میشه یا نه
اگرم نشد اول برنامه مینویسم :
"یا از ویندوز 7 استفاده کنید یا بیخیال پشتیبان گیری بشین!"
دست شما درد نکنه که راهنماییم کردین
اگه به جوابی رسیدم حتما تو سایت میذارم که بقیه دوستان استفاده کنن
راستی شما کدی که وقتی صفحه کلید رو فارسی کردم دوباره اونو انگلیسی کنه رو میدونین؟
یاعلی

amirtofighi
جمعه 26 شهریور 1389, 10:45 صبح
یاااااافتم! یاااااااااااااااااااااااا اااافتم!
مشکل از اسلش بود
اونو از آخر آدرس برداشتم مشکل حل شد
خدا رو شکر