الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن ظهور الجملة بخط عربي فى الدوس بلغة سي

مغلق
بدأه sawy في 11 أكتوبر 2004 · 1 رد · 665 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا مبتدىء فى لغة السي و عند كتابة اول برنامج و هو hello world اردت ان اطبع بدلا من هذه الجملة "اهلا و سهلا " و لكنها ظهرت فى التنفيذ داخل الدوس حروف غريبة و السؤال الان :

كيف يمكننى طباعة كلمات تظهر بخطوط عربية .

#2

أخي الكريم إذا كان نظام الدوس في جهازك يدعم العربي ..بمعنى يظهر عربي

فهذا الكود.. من مكتبة MSDN عبارة عن محرر نصوص يكتب عربي+أجنبي

#include <windows.h> 

VOID main(void) 
{ 
    HANDLE hStdout, hNewScreenBuffer; 
    SMALL_RECT srctReadRect; 
    SMALL_RECT srctWriteRect; 
    CHAR_INFO chiBuffer[160]; // [2][80]; 
    COORD coordBufSize; 
    COORD coordBufCoord; 
    BOOL fSuccess; 

    // Get a handle to the STDOUT screen buffer to copy from and 
    // create a new screen buffer to copy to. 

    hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
    hNewScreenBuffer = CreateConsoleScreenBuffer( 
       GENERIC_READ |           // read-write access 
       GENERIC_WRITE, 
       0,                       // not shared 
       NULL,                    // no security attributes 
       CONSOLE_TEXTMODE_BUFFER, // must be TEXTMODE 
       NULL);                   // reserved; must be NULL 
    if (hStdout == INVALID_HANDLE_VALUE || 
            hNewScreenBuffer == INVALID_HANDLE_VALUE) 
    {
        MyErrorExit("CreateConsoleScreenBuffer"); 
    }

    // Make the new screen buffer the active screen buffer. 

    if (! SetConsoleActiveScreenBuffer(hNewScreenBuffer) ) 
        MyErrorExit("SetConsoleActiveScreenBuffer"); 

    // Set the source rectangle. 

    srctReadRect.Top = 0;    // top left: row 0, col 0 
    srctReadRect.Left = 0; 
    srctReadRect.Bottom = 1; // bot. right: row 1, col 79 
    srctReadRect.Right = 79; 

    // The temporary buffer size is 2 rows x 80 columns. 

    coordBufSize.Y = 2; 
    coordBufSize.X = 80; 

    // The top left destination cell of the temporary buffer is 
    // row 0, col 0. 

    coordBufCoord.X = 0; 
    coordBufCoord.Y = 0; 

    // Copy the block from the screen buffer to the temp. buffer. 

    fSuccess = ReadConsoleOutput( 
       hStdout,        // screen buffer to read from 
       chiBuffer,      // buffer to copy into 
       coordBufSize,   // col-row size of chiBuffer 
       coordBufCoord,  // top left dest. cell in chiBuffer 
       &srctReadRect); // screen buffer source rectangle 
    if (! fSuccess) 
        MyErrorExit("ReadConsoleOutput"); 

    // Set the destination rectangle. 

    srctWriteRect.Top = 10;    // top lt: row 10, col 0 
    srctWriteRect.Left = 0; 
    srctWriteRect.Bottom = 11; // bot. rt: row 11, col 79 
    srctWriteRect.Right = 79; 

    // Copy from the temporary buffer to the new screen buffer. 

    fSuccess = WriteConsoleOutput( 
        hNewScreenBuffer, // screen buffer to write to 
        chiBuffer,        // buffer to copy from 
        coordBufSize,     // col-row size of chiBuffer 
        coordBufCoord,    // top left src cell in chiBuffer 
        &srctWriteRect);  // dest. screen buffer rectangle 
    if (! fSuccess) 
        MyErrorExit("WriteConsoleOutput"); 
    Sleep(10000); 

    // Restore the original active screen buffer. 

    if (! SetConsoleActiveScreenBuffer(hStdout)) 
        MyErrorExit("SetConsoleActiveScreenBuffer"); 

}

إذا لم يظهر عربي

إكتب في بداية البرنامج الدالتين

SetConsoleCP

SetConsoleOutputCP

بارمترات هذة الدوال عبارة عن رقم يعرف صفحة الرموز في جهازك..إذاكانت عربي أو إنجليزي

أرقام صفحات الرموز تجدها في مسجل النظام الريجستري

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage

في الدوال السابقة ..كل مرة جرب رقم صفحة ..وهي الأرقام التي تجدها ضمن مفتاح الرجستري

مثلا

SetConsoleCP (2074);
SetConsoleOutputCP (2074);

إلى أن تظهر لك الرموز عربي .. إذا لم تظهر بعد كل التجارب فهذا يعني أن نظام

الدوس في جهازك لا يدعم عربي..

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…