PDA

View Full Version : PATH



meysamg_alone
شنبه 26 اردیبهشت 1388, 13:52 عصر
سلام به همه
اقا من وقتی مسیر یه یه فایلو میگیرم مثلا با همون DIALOG OPEN مسیرش به این شکله
C:\1.TXT ولی باید به این شکل باشه تا من بتونم استفاده کنم C:\\1.TXT لطفا منو راهنمایی کنید :لبخندساده:

Nima_NF
شنبه 26 اردیبهشت 1388, 14:18 عصر
وقتی شما می خواهید از ورودی مسیری را دریافت کنید و در رشته ذخیره کنید باید دو تا / قرار دهید تا کامپایلر بفهمد که منظور شما ذخیره یک / هست. اگر 4 تا / بنویسید یعنی دو تا را ذخیره کن و ... یعنی اگر به شکل زیر بنویسید:



TCHAR *myPath[100] = TEXT("C:\\name.exe");

آن وقت کامپایلر C:\name.exe را در رشته ذخیره می کند نه دو تا / . در مورد open dialog هم به همین شکل، شما در سایر قسمت های برنامه که مسیر می خواهند مستقیم همان رشته را با یک / قرار دهید که درست هست.

meysamg_alone
شنبه 26 اردیبهشت 1388, 16:55 عصر
درسته حق با شماست ولی من یه مشکل عجیب دارم اگه بگم باورتون نمیشه




char *tt;
tt = LoadFileDialog("c:\\","*.txt");

تویه این خط کد من یه مسیری می گیرم مثلا c:\1.txt خوب حالا این مسیر داخل متغیر tt هست تا اینجا همه چی درسته ولی یه اتفاق عجیب میفته موقعی که برنامه به اینن خد می رسه

ifstream fileTest;

متغیر یه مقدار باینری میگیره یعنی دیگه c:\1.txt نیست می دونم باور کردنش سخته ولی این چیزی که اتفاق میفته حالا اگه من این چند خط کدو بردارم متغیر مشکلی نداره و مقدار خودشو نگر می داره


ifstream fileTest;
fileTest.open(TEXT(tt));
fileTest.getline(strT, 100);

اگه این چند خط کد بالا باشه تویه برنامه و من تویه حالت باگ بخوام خط دستورو حرکت بدم و از این چند خط رد کنم متغیر مقدار خودشو نگر میداره ولی تویه فایل fstream خطا مییره
این vc Win32 خیلی عجیبه !

meysamg_alone
شنبه 26 اردیبهشت 1388, 17:17 عصر
char tt[30]

ولی وقتی از انی کد استفاده می کنم برای تعریف و از تابع lstrcpy استفاده می کنم مشکل حل میشه خوب اخه اصلا مشکل چیه چرا باید ویژوال سی این مشکلو داشته باشه !

Nima_NF
شنبه 26 اردیبهشت 1388, 22:38 عصر
کدی که برای برگرداندن رشته از open dialog در چند تاپیک قبل به شما معرفی شد چندان درست نیست. بهتر هست به جای تخصیص مجدد حافظه با new در داخل تابع، خودتان تابع دیگری بنویسید. یعنی اینکه از پارامتر ورودی رشته ای با طول 256 به تابع ارسال کنید و سپس با strcpy یا معادل یونیکد این تابع مقدار lpstrFile را در متغیر رشته ای ورودی کپی کنید و سپس از آن استفاده کنید.
در کل کار خوبی نیست که محلی متغیر رشته ای تخصیص دهیم و سپس خارج از تابع همچنان از آن استفاده کنیم.

ضمنا یک نکته اینکه اگر قرار هست مستقیم از دابل کوتیشن مانند "text" استفاده کنید باید از TEXT() استفاده کنید. برای نام متغیرها نباید TEXT را بنویسد. یعنی فقط بنویسید tt نه اینکه بنویسید (TEXT(tt

meysamg_alone
یک شنبه 27 اردیبهشت 1388, 00:57 صبح
متوجه شدم
ممنون