PDA

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



m_hp98
شنبه 26 آبان 1386, 13:22 عصر
من TABLE هائی از نوع فاکس پرو دارم که حاوی اطلاعاتی است از نوع فارس تحت داس من درصدد بودم برنامه ای با C# بنویسم که این اطلاعات را بخوانم و UPDATE کنم برای اینکار باید اطلاعات را اول به کدهای ویندوز تبدیل کنم و عمل ویرایش را انجام بدم و سپس انها را به کارکتر کد داس دوباره تبدیل کنم و در فایلهای مذکور بنویسم ولی وقتی من TABLE های فاکسپرو را میخوانم کدهای ASCII اعداد ناخودآگاه به کدهائی غیر از کدهای ASCCI تحت داس تبدیل میشه .:ناراحت:

hassan razavi
شنبه 26 آبان 1386, 14:57 عصر
من کدش رو قبلا نوشتم و دارم. اگه می خواهید Email بدید براتون بفرستم.
اگه می خواهید خودتون انجام بدید ، تا راهنماییتون کنم

سار
یک شنبه 27 آبان 1386, 09:13 صبح
برای اعداد نباید مشکلی باشه.
اگر هم مشکلی دارید تو بخش Foxpro بگردی یکی از دوستان کدش رو نوشته به راحتی میتونی به #C تبدیلش کنی.

ARA
یک شنبه 27 آبان 1386, 09:59 صبح
میتونی ازنرم افزار sepand استفاده کنی و کد اسکی اون کاراکتر ها را تو محیط dos با استفاده از کامپایلر های c یا pascal ببینی

SabaSabouhi
دوشنبه 28 آبان 1386, 09:50 صبح
با سلام
در پروژه‌اى لازم شد همین کار رو بکنیم. نفر FoxPro کار تمام اطلاعات را گزارش گرفت و به صورت Text به ما داد. من هم برنامه‌اى نوشتم که این فایل‌هاى Text رو بریزه تو جدول‌هاى SQL البته به صورت موقتى. یعنى براى هر جدول که به صورت یک گزارش تحویل گرفته بودیمش یک جدول متناسب تو SQL ساختم و اطلاعات رو بعد از Convert ریختم تو جدول SQL و بعد دیگه تبدیل ساختار راحت بود چون همه اطلاعات رو تو SQL داشتیم.
مشکل اصلى تبدیل متن فارسى ایران سیستم بود که دو تا نکته داره اول این که کل متن رو نباید Convert کنى یعنى از فایل Text قسمت فارسى ( ایران سیستم ) رو استخراج کن و فیلد به فیلد Convert رو انجام بده و نکته دوم هم اینه که از یه Convertor خوب استفاده کن. من توابعى براى این کار نوشتم که تو تالار VB فرستادم ( البته به #C هست ) اگه به دردت مى‌خوره اونجا پیداش مى‌کنى.

صبا صبوحى

ARA
دوشنبه 28 آبان 1386, 10:34 صبح
با سلام
در پروژه‌اى لازم شد همین کار رو بکنیم. نفر FoxPro کار تمام اطلاعات را گزارش گرفت و به صورت Text به ما داد.
صبا صبوحى

به راحتی میتونی با odbc به یک فایل dbf فاکس پرو وصل بشی :متفکر:

m_hp98
دوشنبه 28 آبان 1386, 23:32 عصر
دوستان گرامی من مشکلی در رابطه با قرائت فایلها ندارم من در حقیقت درصدد هستم تابعی بنویسم که بتواند کارکترهای فارس داس را به ویندوز و بالعکس تبدیل کنه یعنی بتوان بدون تغییرات کارکتر کد قبلی داس برنامه های تحت ویندوز نوشت که هم اطلاعات ببینیم یا در آن تغییرات لازم را بدهیم

SabaSabouhi
سه شنبه 29 آبان 1386, 09:53 صبح
به راحتی میتونی با odbc به یک فایل dbf فاکس پرو وصل بشی :متفکر:

با سلام
خوب من این رو بلد نبودم و نمى‌خواستم درگیر Fox بشم ضمن این که ساختار پایگاه داده‌ى موجود در Fox رو هم نمى‌شناختم. اما از راهنمایى شما سپاس‌گزارم.


دوستان گرامی من مشکلی در رابطه با قرائت فایلها ندارم من در حقیقت درصدد هستم تابعی بنویسم که بتواند کارکترهای فارس داس را به ویندوز و بالعکس تبدیل کنه یعنی بتوان بدون تغییرات کارکتر کد قبلی داس برنامه های تحت ویندوز نوشت که هم اطلاعات ببینیم یا در آن تغییرات لازم را بدهیم

چرا توابع من رو امتحان نمى‌کنید؟ شاید مشکلتون رو حل کنه. ( تو انجمن VB جستجو کنید )

صبا صبوحى

hassan razavi
سه شنبه 29 آبان 1386, 13:33 عصر
بعد از اینکه فارسی ساز را در محیط Dos اجرا کردید ، برنامه Foxpro را اجرا کنید . در منوی System گزینه Ascii chart رو انتخاب کنید. در جدولی که نمایش داده میشه کدهای اسکی کلیه حروف را میتونید داشته باشید. چه فارسی و چه انگلیسی. چیزی که قابل اهمیت هست اینهست که در اینجا دو نمونه عدد داریم. یعنی کد اسکی اعدادی که در فیلدهایی از نوع عددی مانند integer قراردارند با کد اسکی اعدادی که در فیلدهای متنی قرار دارند متفاوت هست.

خب و اما روش کار :
کافیه که تک تک کاراکترها رو بدست بیاورید و با یک Switch پس از بررسی کد اسکی آن ، کد اسکی مورد نظر در ویندوز را برگردانید.

مشکل کار در حروفی است چند حالتی هستند مثل ب آخر تنها و ب اول چسبان یا ک گ ل م ق ث و غیره. چراکه Dos برای هرکدام از این حالتها یک کد اسکی دارد. یعنی برای مثال کد اسکی حرف 'ب' در دو کلمه "با" , "آب" متفاوت هست.

برای تبدیل Dos به Windows کار خیلی راحت هست چرا که برای هر دو یا سه حالت حرف در dos ، فقط یک حالت در Windows وجود دارد یعنی اگه ب آخر تنها باش و یا ب اول چسبان کلا حرف ب را در Switch برمیگردانیم . ولی برای تبدیل Win یه Dos اینجوری نیست. باید تشخیص بدیم که ب مورد نظر کدام هست و سپس کد اسکی مربوط به آنرا برگردانیم.

امیدوارم متوجه شده باشید. من این کد رو در ++C نوشتم و براتون میزارم. خدا کنه بدردتون بخوره. اگه هم نتونستید ازش استفاده کنید ، سعی میکنم کمکتون کنم تا بنویسیدش.

hassan razavi
سه شنبه 29 آبان 1386, 13:53 عصر
این متد برای تبدیل Dos به Win هست که یک Char میگیره و یک Char برمیگردونه. فقط من نام فارسی سازش یادم نمیاد. از روش بالا چک کنید ببینید کدهای اسکی فارسی Foxpro شما بعد از اجرای فارسی ساز با کدهای اسکی موجود در کد زیر یکی هست یا خیر. در صورت لزوم میتونید کدهای اسکی را خودتون به راحتی عوض کنید.

مرحله بعد یعنی تبدیل Win به Dos خیلی کار داره. اول این و پیاده سازی کنید. وقتی جواب گرفتید بگید تا برا تون دومی را بفرسم.


String con(char s)
{
Byte x=s;
switch (x)
{
case 32:return ' ';
case 40:return ')';
case 41:return '(';

case 48:return '0';
case 59:return '1';
case 50:return '2';
case 51:return '3';
case 52:return '4';
case 53:return '5';
case 54:return '6';
case 55:return '7';
case 56:return '8';
case 57:return '9';

case 128:return '0';
case 129:return '1';
case 130:return '2';
case 131:return '3';
case 132:return '4';
case 133:return '5';
case 134:return '6';
case 135:return '7';
case 136:return '8';
case 137:return '9';
case 138:return ',';
case 139:return '-';
case 140:return '?';

case 141:return 'آ';
case 142:return 'ئ';
case 143:return 'ء';
case 144:return 'ا';
case 145:return 'ا';
case 146:return 'ب';
case 147:return 'ب';
case 148:return 'پ';
case 149:return 'پ';
case 150:return 'ت';
case 151:return 'ت';
case 152:return 'ث';
case 153:return 'ث';
case 154:return 'ج';
case 155:return 'ج';
case 156:return 'چ';
case 157:return 'چ';
case 158:return 'ح';
case 159:return 'ح';
case 160:return 'خ';
case 161:return 'خ';
case 162:return 'د';
case 163:return 'ذ';
case 164:return 'ر';
case 165:return 'ز';
case 166:return 'ژ';
case 167:return 'س';
case 168:return 'س';
case 169:return 'ش';
case 170:return 'ش';
case 171:return 'ص';
case 172:return 'ص';
case 173:return 'ض';
case 174:return 'ض';
case 175:return 'ط';
case 224:return 'ظ';
case 225:return 'ع';
case 226:return 'ع';
case 227:return 'ع';
case 228:return 'ع';
case 229:return 'غ';
case 230:return 'غ';
case 231:return 'غ';
case 232:return 'غ';
case 233:return 'ف';
case 234:return 'ف';
case 235:return 'ق';
case 236:return 'ق';
case 237:return 'ک';
case 238:return 'ک';
case 239:return 'گ';
case 240:return 'گ';
case 241:return 'ل';
case 242:return "لا";
case 243:return 'ل';
case 244:return 'م';
case 245:return 'م';
case 246:return 'ن';
case 247:return 'ن';
case 248:return 'و';
case 249:return 'ه';
case 250:return 'ه';
case 251:return 'ه';
case 252:return 'ی';
case 253:return 'ی';
case 254:return 'ی';
default :
return String(char(x));
}
}

ashkan12345
دوشنبه 05 آذر 1386, 13:59 عصر
میشه تابع تبدیل رشته به داس رو اینجا بزارین؟
میدونین که در تبدیل کاراکترهای ویندوز به داس نمیشه یک کاراکتر رو به تنهایی تبدیل کرد . چون باید تشخیص بدین که کاراکتر آخر کلمه هست یا اول یا کاراکتر میانی هست.
من یه تابع دارم که یک کاراکتر رو به کاراکتر تحت داس تبدیل میکنه.
اینو نمی تونم استفاده کنم.
آخه همه حروف رو بزرگ میزنه. مثلا بجای جمله "سلام رضا" مینویسه "س ل ا م ر ض ا"
میشه کمکم کنید. :اشتباه:

Abolbarakat
شنبه 04 اسفند 1386, 13:59 عصر
دوست عزیز
ممنون میشم این مثال رابرای دلفی نیزارائه دهید.
ازویندوز به داس وبالعکس

Namjoo
پنج شنبه 23 اسفند 1386, 10:14 صبح
با سلام
من TABLE هائی از نوع فاکس پرو دارم که حاوی اطلاعاتی است از نوع فارسی (ایران سیستم) تحت داس من درصدد بودم برنامه ای با C# بنویسم که این اطلاعات را بخوانم و UPDATE کنم .
خواهشمندم چون جنابعالی این برنامه را دارید در صورت امکان این برنامه را برای من به آدرس ذیل ایمیل نمائید.
SIFCO2@GMAIL.COM
باتشکر

eftekhari_majid
چهارشنبه 19 تیر 1387, 20:40 عصر
از کدی که گذاشته بودی خیلی لذت بردم لطفا کد تبدیل Windows به Dos را هم بگذارید

Anzerato
شنبه 14 دی 1387, 14:19 عصر
سلام HassanRazavi
اگه ممکنه کمکم کن تابع تبدیل از ویندوز به داس رو بنویسم
ایمیل من: anzerato@gmail.com

nickaein.i
سه شنبه 23 تیر 1388, 17:06 عصر
یه برنامه مبدل فارسی DOS که مشکلاتی مثل به هم ریختی و جابجا شدن رقمها و... نداره!!

http://www.barnamenevis.org/forum/showpost.php?p=756770&postcount=21

Mainar
شنبه 12 دی 1388, 13:06 عصر
سلام
من از اين برنامه استفاده كردم اما نميدونم چرا اعداد داخل جدول رو حذف كرده!فقط تيتر بالاي جدول و سرستونها رو برگردونده

morteza.azad
شنبه 12 دی 1388, 15:04 عصر
سلام اين ايميل منه لطفا برنامه رو واسه من هم ميل كنيد . ممنون
morteza.azad65@gmail.com