سلام به همه
اقا من وقتی مسیر یه یه فایلو میگیرم مثلا با همون DIALOG OPEN مسیرش به این شکله
C:\1.TXT ولی باید به این شکل باشه تا من بتونم استفاده کنم C:\\1.TXT لطفا منو راهنمایی کنید
سلام به همه
اقا من وقتی مسیر یه یه فایلو میگیرم مثلا با همون DIALOG OPEN مسیرش به این شکله
C:\1.TXT ولی باید به این شکل باشه تا من بتونم استفاده کنم C:\\1.TXT لطفا منو راهنمایی کنید
وقتی شما می خواهید از ورودی مسیری را دریافت کنید و در رشته ذخیره کنید باید دو تا / قرار دهید تا کامپایلر بفهمد که منظور شما ذخیره یک / هست. اگر 4 تا / بنویسید یعنی دو تا را ذخیره کن و ... یعنی اگر به شکل زیر بنویسید:
TCHAR *myPath[100] = TEXT("C:\\name.exe");
آن وقت کامپایلر C:\name.exe را در رشته ذخیره می کند نه دو تا / . در مورد open dialog هم به همین شکل، شما در سایر قسمت های برنامه که مسیر می خواهند مستقیم همان رشته را با یک / قرار دهید که درست هست.
درسته حق با شماست ولی من یه مشکل عجیب دارم اگه بگم باورتون نمیشه
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 خیلی عجیبه !
char tt[30]
ولی وقتی از انی کد استفاده می کنم برای تعریف و از تابع lstrcpy استفاده می کنم مشکل حل میشه خوب اخه اصلا مشکل چیه چرا باید ویژوال سی این مشکلو داشته باشه !
کدی که برای برگرداندن رشته از open dialog در چند تاپیک قبل به شما معرفی شد چندان درست نیست. بهتر هست به جای تخصیص مجدد حافظه با new در داخل تابع، خودتان تابع دیگری بنویسید. یعنی اینکه از پارامتر ورودی رشته ای با طول 256 به تابع ارسال کنید و سپس با strcpy یا معادل یونیکد این تابع مقدار lpstrFile را در متغیر رشته ای ورودی کپی کنید و سپس از آن استفاده کنید.
در کل کار خوبی نیست که محلی متغیر رشته ای تخصیص دهیم و سپس خارج از تابع همچنان از آن استفاده کنیم.
ضمنا یک نکته اینکه اگر قرار هست مستقیم از دابل کوتیشن مانند "text" استفاده کنید باید از TEXT() استفاده کنید. برای نام متغیرها نباید TEXT را بنویسد. یعنی فقط بنویسید tt نه اینکه بنویسید (TEXT(tt
متوجه شدم
ممنون