Formkeydown ile gelen hatalı karakterler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
aegean
Üye
Mesajlar: 23
Kayıt: 24 Tem 2019 09:32

Formkeydown ile gelen hatalı karakterler

Mesaj gönderen aegean »

Delphinin Formkeydown event i ile barkod okuyucudan gelen verileri alarak değişkene atmak istedim fakat ne yazkkı windows herhangi bir editorde doğru olarak gelen karakterler formkeydown ile okununca bir dunya hata oluyor. Öyleki program içerisinde o karakterleri olması gerekenler ile replace etmek dahi mümkün değil çünkü farkli karakterleri birden cok kullanıyor tek bir defa kullansa her klavye seti için dogru olanla replace edip düzeltirim.
Test etmek için bir QR barkod oluşturup içerisine tüm print edilir karakterleri yazdım Bunu notepad üzerinde iken ING klavye ile Barkod okuyucuyu hid klavye olarak tanınmış vaziyete iken okutunca aşagıdaki dogru karakter dizgesi oluşuyor (Barkoda da aynen bunları koydum).
(bu arada barkod okuyucu da ING klavye düzenine göre set edilmiş durumda)

<>"!'^+-*~%&/()=?_,.:;\1234567890qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM (Olması gereken doğru karakter dizesi)

Ama bunu Formkeydown ile karakter karakter okutunca

¼¾Þ1Þ6»½8À57¿90»¿½¼¾ººÜ1234567890QWERTYUOPASDFGHJKLIZXCVBNMQWERTYUIOPASDFGHJKLZXCVBNM (ING klavye ile )

Bu sekilde geliyor Turkçe klavye seti ile tam şenlik oluşuyor

¿ÜÞ1Þ6½ß8À57¾90½¾ß¿Üºº¼1234567890QWERTYUOPASDFGHJKLIZXCVBNMQWERTYUIOPASDFGHJKLZXCVBNM

ve bir de Formkeydown ile okuyunca küçük harfleri hiç vermiyor hepsine uppercase muamelesi yapıyor sanki klavyede birileri shifte basmıs gibi.

delphi 10.4 kullanıyorum VCL ile ve win 10 kullanarak yaptıgım test sonucu bu
Ayrıca Burada verilen bir örnekte denedim WMINPUT ile rawinput örneginde de sonuc tamamen aynı cıktı yani formkeydown ile aynı karakterler oradan da geliyor.
HID barkod okuyucu bilgilerini klavye bufferinden dogru olarak almanın bir yolu varmı
Aynı barkod okuyucuyu Usb com emülatörü ile comport dan okutursam bütün karakterlerr doğru geliyor. Yani windows kendisi okuyup bir editöre gönderirse herşey dögru ama onu biz okursak ve bir değişkene atmak istersek bir dünya saçmalik oluşuyor.
Bu konu hakkında önerisi olan arkadasların yardımlarını rica edeceğim
Simdiden tesekkür ederim iyi günler dilerim
ikra
Üye
Mesajlar: 897
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Formkeydown ile gelen hatalı karakterler

Mesaj gönderen ikra »

Unicode olayindan kaynaklandigini düsünüyorum. Delphi 7‘de char 1 byte yer kaplarken, kullandigin sürümde char 2 byte yer kapliyor.
kıdemsiz üye
Cevapla