Pembahasan program adalah perkara penting, terutama bagi pengguna yang tidak bertutur dalam bahasa asing. Seringkali, pengguna program Delphi tertanya-tanya bagaimana cara memperbaikinya.
Arahan
Langkah 1
Intinya adalah bahawa pengekodan OEM dan ANSI (di mana Delphi berfungsi) tidak sepadan. Mereka mempunyai kedudukan berbeza simbol Cyrillic. ANSI juga mempunyai watak beraksen, yang mana OEM tidak. Tetapi yang kedua mengandungi simbol pseudo-grafik, yang sangat diperlukan untuk memaparkan jadual, walaupun ini tidak banyak permintaan. Namun perlu diperhatikan bahawa, secara umum, jadual ini boleh ditukar ganti - mereka mempunyai kemungkinan yang sama untuk memaparkan maklumat teks.
Langkah 2
Terdapat beberapa cara untuk menyelesaikan masalah Russification. Yang pertama bekerja di penyunting OEM. Anda pada awalnya boleh menyediakan bahagian teks program yang penting untuk jadual kod dalam editor yang berfungsi dalam pengekodan OEM. Cukup mudah, tetapi pada masa yang sama penyelesaian yang berkesan. Ini benar terutamanya untuk menulis utiliti tempatan, di mana output maklumat, bagaimanapun, sangat dituntut.
Langkah 3
Mengenai kekurangan kaedah ini, di sini anda boleh menetapkan kerja di luar IDE, yang tidak asing bagi banyak orang, dengan loceng dan wiselnya yang hebat dalam kehidupan, seperti: pengekodan, penyusunan, penyahpepijatan. Dan semua ini dikatakan, "dalam satu botol." Di samping itu, ketika projek ini berkembang, kesulitan tertentu mulai muncul ketika sumber rentetan pihak ketiga yang dibuat menggunakan pengekodan ANSI mula digunakan.
Langkah 4
Sekiranya projek tersebut tidak mengandungi rentetan yang dimasukkan secara langsung dalam kod (hard-coded), anda boleh memindahkan semua sumber rentetan ke dalam modul yang terpisah, kemudian melokalisasikannya ke pengekodan yang diperlukan. Nasib baik, rangkaian penuh dengan utiliti yang mengubah pengekodan fail.
Langkah 5
Sekarang mengenai penggunaan prosedur penyaringan. API Windows mengandungi fungsi untuk membantu anda menukar pengekodan ANSI dan OEM antara satu sama lain. Ini adalah OemToChar dan CharToOem. Mereka digunakan untuk memaparkan teks dengan penggantian fragmen Writeln ('teks'); ke dalam serpihan berikut:
prosedur MyWriteln (const S: string);
var
NewStr: rentetan;
bermula
SetLengtn (NewStr, Panjang (S));
CharToOem (PChar (S), PChar (NewStr));
Writeln (NewStr);
akhir;
MyWriteln (‘teks’);
Langkah 6
Mengenai kelemahan kaedah ini, adalah mustahil untuk menggunakan sintaks Tulis yang diperpanjang dan mengacaukan teks aplikasi dengan prosedur panggilan untuk menyaring. Apabila anda perlu mengemukakan aplikasi yang sudah siap dengan banyak panggilan untuk Menulis, ini menjadi masalah yang serius.
Langkah 7
Akhir sekali, ubah halaman kod konsol menggunakan Windows API. Kaedah ini didokumentasikan, dengan cara. Satu-satunya tangkapan adalah bahawa ciri tersebut tidak berfungsi pada Windows 95 dan 98. Walaupun jika aplikasi akan berjalan secara eksklusif pada Windows NT, dalam hal ini, anda dapat menggunakan fungsi SetConsoleOutputCP (866).