2010-06-09 20 views
6

Herkes varsayılan Windows XP kod sayfasını nasıl programlayacağımı önerir (bunu Delphi'den yapıyorum)? (Bu, Unicode olmayan uygulamalar için Denetim Masası -> Bölgesel Ayarlar -> Dil'e girmenin karşılığı olacaktır). Bu durumda Windows XP'de varsayılan kod sayfasını program aracılığıyla değiştirir misiniz? (Delphi'den)

, ben Çince (PRC) geçmek için ve böylece aşağıdaki kayıt dizeleri için yazıyorum istiyorum: HKLM \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage ACP = 936 MACCP = 10008 OEMCP \ = 936

(Denetim Masası'ndaki Unicode olmayan kod sayfasının aşağı inmesini değiştiren tam olarak nedir). Değiştirmem gereken başka bir ayar olmalı - ve kayıt defterine yazmak yerine bir Win API çağrısı (varsa) kullanmayı tercih ederim.

Ben de boşuna Kontrol \ Nls \ Language \ Varsayılan = 0804 (Çince PRC) \ HKLM \ SYSTEM \ CurrentControlSet ayar denedim.

Değişmek istemiyorum

'yerel' kendi başına da vb saat/tarih ayarlarını ayırıcılar, vb değişecek bu kadar

ben gereken bir ANSI uygulamasını kullanıyorum Bunun nedeni Çince karakterler render ve otomatik olarak sistem karakterleri göstermek için bir araç yazıyorum (UI bozulmamış diğer yönlerini bırakarak).

Teşekkürler! Eğer başka bir şey sistemine çalışacak bir köşk tipi uygulama yazıyorsanız bu uygun olur

Duncan

cevap

8

tek zamandır. Bu değişiklik, sistemdeki diğer her uygulamayı etkileyecektir. Sadece karakterleri işlemek gerekir ve doğrudan Windows API'larından W sürümlerini çağırarak yerine TCanvas yöntemlerle giderek Delphi eski sürümlerinde bunları işleyebilen bir WideString onları alabilirsiniz

. Yani, TCanvas.TextOut yerine DrawTextW veya ExtTextOutW'u arayın ve Unicode karakterlerini sistem ANSI kod sayfasına dönüştürmeden çizer.

Daha eksiksiz bir seçenek TMS Unicode Component Pack'dur. Delphi 6-2007'de Unicode etkinleştirilmiş uygulamaların yapılmasını destekler ve sizin için tüm W işlevlerini çağırır. İyi çalışıyor ve TCanvas'ı ya da normal gibi Caption/Text özelliklerini kullanabilirsiniz. Tek fark, özelliklerin hepsi WideStrings'in yerine. Bu, başlangıçta TNT Unicode Kontrolleri paketiydi ve mevcut here'un daha eski, desteklenmeyen bir sürümü var.

Son olarak, yalnızca uygulamanız için ANSI kod sayfasını değiştirmek için Microsoft'un AppLocale yardımcı programını kullanabilirsiniz. Bir toplu iş komut dosyası here, nağme ekranı here olmadan çalıştırmak için bir yama ve SBAppLocale adlı bir komut satırı klonu çağırmakla ilgili ayrıntılar vardır. Çalışır, ama bir kesmek ve diğer seçenekler uzun vadede daha iyi.

+0

Craig - Evet, bu, yazılımımızın PC'de (windows kabuğunun yanı sıra) çalışan tek görünür uygulaması olduğu bir konsol uygulamasıdır. Söz konusu ANSI yazılımı zaten yazılmıştır ve bunu değiştiremem (bu durum için). Windows kod sayfasını değiştirmek için ayrı bir yardımcı program yazıyorum. AppLocale iyi görünüyor.Hala en iyi çözüm unicode olmayan kod sayfasını değiştirmek olduğunu düşünüyorum - ancak Denetim Masası -> Bölgesel Ayarlar 'daki açılır listeyi el ile tıklatmadan bunu nasıl yapacağınıza şaşırdım. Her iki şekilde de, çözümlerin bolluğu için çok teşekkürler! – Duncan

İlgili konular