Delphi Can

Orjinalini görmek için tıklayınız: char AnsiChar hatası
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhaba,


Biraz karışık durumla karşı karşıyayım bir unit oluşturdum.


bu unitte
Type
 char = AnsiChar;
var. 

Main forumdaki tedit için Char için hata alıyorum bu sorunu nasıl çözerim?

procedure TMainForm.EditSearchKeyPress(Sender: TObject; var Key: Char);
begin
  Listele(Sender);
end;

[dcc32 Error] Main.pas(2713): E2066 Missing operator or semicolon
[dcc32 Error] Main.pas(2713): E2008 Incompatible types
[dcc32 Fatal Error] Main.pas(2713): E2226 Compilation terminated; too many errors
Failed
Kullandığınız Delphi versiyonunu belirtmemişsiniz ama genel olarak aynı isimde farklı unit'lerden tipler kullanılmak istendiğinde UnitIsmi.TipIsmi şeklinde kullanılabilir.
Sizin örnekte EditSearchKeyPress'teki Char yerine System.Char yazarak kullanabilirsiniz(Hem interface bölümünde hem de implementation bölümünde bunu yapmalısınız)

Not: Aslında aldığınız ilk hata (E2066) bununla ilgili gibi gözükmüyor. Öncelikle o sorun halledilmeli gibi...
Smile Teşekkür ederim.
@SimaWB hocamın paylaşımına ilaveten type declerasyonu yaptığınız bir unit te oluşturuabilirsiniz
Böylece projde kullanılan tüm unitler bir yerde olmuş olur ve bazı yazım problemlerinin önünede geçmiş olabilirsiniz
(19-08-2019, Saat: 11:45)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@SimaWB  hocamın paylaşımına ilaveten type declerasyonu yaptığınız bir unit te oluşturuabilirsiniz
Böylece projde kullanılan tüm unitler bir yerde olmuş olur ve bazı yazım problemlerinin önünede geçmiş olabilirsiniz

Anladım, teşekkür ederim.
Esas soruyu kimse sormamış. Neden Delphi'nin yerleşik veri türünü (Char) yeni bir tip tanımı yaparak ezmeye çalışıyorsunuz ?
(20-08-2019, Saat: 08:43)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Esas soruyu kimse sormamış. Neden Delphi'nin yerleşik veri türünü (Char) yeni bir tip tanımı yaparak ezmeye çalışıyorsunuz ?

Type
char = AnsiChar;

Tugrul hocam haklı char tipini ansichar ile yok etmek üzeresiniz Smile)
(20-08-2019, Saat: 08:43)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Esas soruyu kimse sormamış. Neden Delphi'nin yerleşik veri türünü (Char) yeni bir tip tanımı yaparak ezmeye çalışıyorsunuz ?

Sanırsam isim olarak "char" koymak istenmiş. Char veri türü olduğunu hesap edilmemiş diye tahmin ediyorum.
Delphi'nin eski versiyonlarında (2009 öncesi) yazılan bazı kütüphaneleri yeni versiyonlarda kullanmak için bu tarz bir dönüşüm ile günü kurtarabiliyoruz. (Tabii ki asıl yapılması gereken ilgili kaynağı unicode'a uygun hale getirmek)
Esasen Delphi geliştiricileri (Embarcadero) olayın sorun haline gelmesine yol açtı. Eski versiyonlarda Char = AnsiChar iken yeni versiyonlarda (Sanırım XE7'den itibaren) Char = WideChar ve String = WideString (ya da = UnicodeString) oldu. Tabii bu da pek çok kütüphanenin elden geçirilmesini gerektirdi. Eğer 2009 ya da 2010 versiyonunda bunu yapsalardı bu problemler çok daha az yaşanacaktı.
Kerembacioglu'nun sorusuna gelince, aldığı hatayı bir event'in parametrelerinden birini farklı bir tiple tanımlamaya kalkması nedeniyle alıyor. Tuğrul Helvacı'nın sorusu çok yerinde. Standart bir tipi niçin değiştiriyorsunuz?
Sayfalar: 1 2