Russification ของโปรแกรมเป็นเรื่องสำคัญ โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ที่ไม่พูดภาษาต่างประเทศ บ่อยครั้งที่ผู้ใช้โปรแกรม Delphi สงสัยว่าจะ Russify ได้อย่างไร
คำแนะนำ
ขั้นตอนที่ 1
ประเด็นคือการเข้ารหัส OEM และ ANSI (ซึ่ง Delphi ทำงาน) ไม่ตรงกัน พวกเขามีตำแหน่งต่าง ๆ ของสัญลักษณ์ซีริลลิก ANSI ยังมีอักขระเน้นเสียง ซึ่ง OEM ไม่มี แต่ส่วนที่สองมีสัญลักษณ์กราฟิกหลอกซึ่งจำเป็นสำหรับการแสดงตารางแม้ว่าจะไม่ต้องการมากนัก และยังเป็นที่น่าสังเกตว่า โดยทั่วไปแล้ว ตารางเหล่านี้สามารถใช้แทนกันได้ - มีความเป็นไปได้เหมือนกันในการแสดงข้อมูลข้อความ
ขั้นตอนที่ 2
มีหลายวิธีในการแก้ปัญหา Russification อย่างแรกคือทำงานในโปรแกรมแก้ไข OEM ในขั้นต้น คุณสามารถเตรียมส่วนต่าง ๆ ของข้อความโปรแกรมที่มีความสำคัญต่อตารางรหัสในตัวแก้ไขที่ทำงานในการเข้ารหัส OEM ค่อนข้างง่าย แต่ในขณะเดียวกัน โซลูชันที่มีประสิทธิภาพ โดยเฉพาะอย่างยิ่งสำหรับการเขียนโปรแกรมอรรถประโยชน์ในพื้นที่ซึ่งมีความต้องการอย่างมากในการส่งออกข้อมูล
ขั้นตอนที่ 3
สำหรับข้อบกพร่องของวิธีนี้ คุณสามารถกำหนดการทำงานนอก IDE ซึ่งหลายคนคุ้นเคยได้ที่นี่ โดยมีเสียงระฆังและเสียงนกหวีดที่ยอดเยี่ยมในชีวิต เช่น การเขียนโค้ด การคอมไพล์ การดีบัก และทั้งหมดนี้บอกว่า "ในขวดเดียว" นอกจากนี้ เมื่อโปรเจ็กต์เติบโตขึ้น ปัญหาบางอย่างก็เริ่มปรากฏขึ้นเมื่อเริ่มใช้ทรัพยากรสตริงของบุคคลที่สามที่สร้างโดยใช้การเข้ารหัส ANSI
ขั้นตอนที่ 4
หากโปรเจ็กต์ไม่มีสตริงที่รวมอยู่ในโค้ดโดยตรง (ฮาร์ดโค้ด) คุณสามารถย้ายทรัพยากรสตริงทั้งหมดไปยังโมดูลที่แยกจากกัน จากนั้นให้โลคัลไลซ์ไปยังการเข้ารหัสที่จำเป็น โชคดีที่เครือข่ายเต็มไปด้วยยูทิลิตี้ที่เปลี่ยนการเข้ารหัสไฟล์
ขั้นตอนที่ 5
ตอนนี้เกี่ยวกับการใช้ขั้นตอนการกรอง Windows API มีฟังก์ชันที่จะช่วยคุณแปลงการเข้ารหัส ANSI และ OEM เป็นอีกอันหนึ่ง เหล่านี้คือ OemToChar และ CharToOem ใช้เพื่อแสดงข้อความโดยแทนที่ส่วนย่อยของ Writeln ('text '); ออกเป็นชิ้นๆ ดังนี้
ขั้นตอน MyWriteln (const S: string);
var
NewStr: สตริง;
เริ่ม
SetLengtn (NewStr, ความยาว (S));
CharToOem (PChar (S), PChar (NewStr));
Writeln (NewStr);
จบ;
MyWriteln ('ข้อความ');
ขั้นตอนที่ 6
สำหรับข้อเสียของวิธีนี้ มันเป็นไปไม่ได้ที่จะใช้ไวยากรณ์การเขียนแบบขยายและทำให้ข้อความของแอปพลิเคชันยุ่งเหยิงด้วยขั้นตอนการเรียกเพื่อกรอง เมื่อคุณต้องการ Russify แอปพลิเคชันที่เสร็จสิ้นแล้วด้วยการเรียกใช้ Write หลายครั้ง สิ่งนี้จะกลายเป็นปัญหาร้ายแรง
ขั้นตอนที่ 7
สุดท้ายแต่ไม่ท้ายสุด ให้เปลี่ยนหน้าโค้ดคอนโซลโดยใช้ Windows API วิธีนี้ได้รับการบันทึกไว้โดยวิธีการ สิ่งเดียวที่จับได้คือคุณลักษณะนี้ใช้ไม่ได้ใน Windows 95 และ 98 แม้ว่าแอปพลิเคชันจะทำงานบน Windows NT โดยเฉพาะ แต่ในกรณีนี้ คุณสามารถใช้ฟังก์ชัน SetConsoleOutputCP (866) ได้