Unicodda kontrol

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Orhan
Üye
Mesajlar: 32
Kayıt: 09 May 2005 03:35
Konum: Almanya

Unicodda kontrol

Mesaj gönderen Orhan »

Arkadaşlar merhaba

Acii kodda olduğu gibi Unicodda da kontrol yapılabilirmi?

Mesela: If RichEdit1.Text[RichEdit1.SelStart] = #65 then
Showmessage('Mehmet Akif');

Aynı Mantığı unicodda gerek karakter gerekse unicode yazarak kullanmak mümkünmü.

Selam ve dua ile...
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

yapamazsınız, hatalı işlem olur, :ara Tnt unicode bileşen setini indirip kurun. forumda bahsi geçmişti daha önce, TntWideStrUtils unitini ekleyin projenize, oradaki widecopy widepos gibi delphi deki standart string fonksiyonlarının unicodeları var. ayrıca diğer system ve utils unitlerindede faydalı fonksiyonlar var(standart systemdeki fonksiyonların unicodeları mesela)

Kod: Tümünü seç

{*****************************************************************************}
{                                                                             }
{    Tnt Delphi Unicode Controls                                              }
{      http://www.tntware.com/delphicontrols/unicode/                         }
{        Version: 2.1.17                                                      }
{                                                                             }
{    Copyright (c) 2002-2005, Troy Wolbrink (troy.wolbrink@tntware.com)       }
{                                                                             }
{*****************************************************************************}

unit TntWideStrUtils;

{$INCLUDE TntCompilers.inc}

interface

{ Wide string manipulation functions }

{$IFNDEF COMPILER_9_UP}
function WStrAlloc(Size: Cardinal): PWideChar;
function WStrBufSize(const Str: PWideChar): Cardinal;
{$ENDIF}
function WStrMove(Dest: PWideChar; const Source: PWideChar; Count: Cardinal): PWideChar;
{$IFNDEF COMPILER_9_UP}
function WStrNew(const Str: PWideChar): PWideChar;
procedure WStrDispose(Str: PWideChar);
{$ENDIF}
//---------------------------------------------------------------------------------------------
{$IFNDEF COMPILER_9_UP}
function WStrLen(Str: PWideChar): Cardinal;
function WStrEnd(Str: PWideChar): PWideChar;
{$ENDIF}
function WStrCat(Dest: PWideChar; const Source: PWideChar): PWideChar;
{$IFNDEF COMPILER_9_UP}
function WStrCopy(Dest, Source: PWideChar): PWideChar;
function WStrLCopy(Dest, Source: PWideChar; MaxLen: Cardinal): PWideChar;
function WStrPCopy{TNT-ALLOW WStrPCopy}(Dest: PWideChar; const Source: AnsiString): PWideChar;
function WStrPLCopy{TNT-ALLOW WStrPLCopy}(Dest: PWideChar; const Source: AnsiString; MaxLen: Cardinal): PWideChar;
{$ENDIF}
function WStrScan(const Str: PWideChar; Chr: WideChar): PWideChar;
function WStrComp(Str1, Str2: PWideChar): Integer;
function WStrPos(Str, SubStr: PWideChar): PWideChar;

{ ------------ introduced --------------- }
function WStrECopy(Dest, Source: PWideChar): PWideChar;
function WStrLComp(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer;
function WStrLIComp(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer;
function WStrIComp(Str1, Str2: PWideChar): Integer;
function WStrLower(Str: PWideChar): PWideChar;
function WStrUpper(Str: PWideChar): PWideChar;
function WStrRScan(const Str: PWideChar; Chr: WideChar): PWideChar;
function WStrLCat(Dest: PWideChar; const Source: PWideChar; MaxLen: Cardinal): PWideChar;
function WStrPas(const Str: PWideChar): WideString;

{ SysUtils.pas } //-------------------------------------------------------------------------

function WideLastChar(const S: WideString): PWideChar;
function WideQuotedStr(const S: WideString; Quote: WideChar): WideString;
{$IFNDEF COMPILER_9_UP}
function WideExtractQuotedStr(var Src: PWideChar; Quote: WideChar): Widestring;
{$ENDIF}
function WideDequotedStr(const S: WideString; AQuote: WideChar): WideString;
.-.-.-.-.-.-.-. ^_^
Orhan
Üye
Mesajlar: 32
Kayıt: 09 May 2005 03:35
Konum: Almanya

Mesaj gönderen Orhan »

Selamun aleykum

Eline diline gonluna saglik

Tnt Unicodlarini daha once denemistim.
Bu sefer bir turlu yapamadim. Bu hususta tekrar kitaplari karistirdim olmadi. Iki gundur webde dolasiyorum bir turlu uygun component bulamadim. Buldugum komponentlerle yazabiliyorum ama kod sayfasindan inicodla #65253 gibi kontrol yapamiyorum. Bu konuda tnt componentlerin yapip yapmadiginida bilmiyorum.

Bir tane buldum calisiyordu ama tam surum olmadigi icin tam calismiyordu sildim. ismini hatirlayamadigim icin maalesef tekrar bulamiyorum.

Emin olun usandim aramak ve denemekten yardim ederseniz memnun olurum

Selamlar
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Ben WideStringleri bolca kullanıyorum ve [] operatörünü de kullanıyorum. Şimdiye kadar sorunum olmadı. Senin sorunun tam olarak ne? Karakterlerin ordinal değerlerinin tutmaması mı yoksa unicode değerlerin yanlış olarak gelmesi mi?
Orhan
Üye
Mesajlar: 32
Kayıt: 09 May 2005 03:35
Konum: Almanya

Sorun

Mesaj gönderen Orhan »

Merhaba

Once ilginizden dolayi tesekkur

Sorun: Rich editte unicodla yazilmis bir metni kontrol etmek.

Mesela:

procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
If RichEdit1.Text[RichEdit1.SelStart] = #65253 then
Showmessage('Mehmet Akif'); gibi.
end;
end.

Yani bilesen buradaki unicodu tanimasi lazim. Degilse hata veriyor. Bu sekliyle kontrol yapilamiyor.

Aslinda unicodla yazilmis metni bu sekilde kontrol eden componentler var. Bir defa bulmustum daha bulamadim.

Selamlar
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Birincisi Richedit unicode değil. İçine unicode yazılsa dahi, siz Lines ile işlem yaparsanız TStringList'i kullanacağınızdan ansi, veya Text ile işlem yaparsanız string olacağından yine ansi sonuç alırsınız. Size daima ansi gelir. Yani #255 ve yukarısına çıkamazsınız. Bunun yerine işlemlerinizi TntRichEdit ile yaparsanız Lines özelliği TWideStringList ve Text özelliği de WideString olacaktır. Böylelikle karakter sınır #65535'e çıkacak ve siz #65253 kontrolünü yapabileceksiniz.
kolay gele.
Orhan
Üye
Mesajlar: 32
Kayıt: 09 May 2005 03:35
Konum: Almanya

Unicode

Mesaj gönderen Orhan »

Tesekkurler

Sorunda bu ya. Ben "tnt"yi denedim bir turlu derleyemedim. Nekadar denediysem hata veriyor. "Lmd" zaten olmuyor. Yani unicodla yazilabiliyor ama kontrol yapilamiyor.

http://www.tsilang.com
http://www.sicomponents.com

Buradaki sitede labele ait bir component var ve sozkonusu islemi yapiyor. Fakat richedit componenti yok. Herhalde demo versiyonu.

Nerede hata yaptigimi bilmiyorum. Eger mumkunse tnt nin derleme asamalarini kisaca izah edermisiniz

Selamlar

Selamlar
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

derlenme aşaması olarak bileşen kurulumunu kast ediyorsunu herhalde. Birincisi Tnt'nin son sürümünü buradan indiriyorum:
http://download.tntware.com/delphi_unic ... ntrols.zip

İkincisi bunu silmeyeceğim sabit bir yere açıyorum. Ardından açtığımız bu klasörü Delphi'nin library path'ine ekliyorum. Ardından Hangi delphi sürümün kullanıyorsam, klasör içindeki packages klasöründeki ilgili xxxVcl ve xxxVcl_Design paketlerini delphi ile açıyorum. Burada D2005 için d9, ve D2006 için d10 klasörlerini kullanıyorum. Sonra bu paketleri build yapıp, derliyorum. Burada bir yanlışlık olmaması gerek çünkü d6 ve yukarısı için her paket bulunmakta. Eğer D2005 ve yukarısını kullanıyorsanız BPL dosyaları Belgelerim klasöründe Borland Studio Projects altında olacaktır. Ardından oluşan bu bpl dosyalarını Components menüsü altındaki "Install Package" ile kurun.

kolay gele.
Orhan
Üye
Mesajlar: 32
Kayıt: 09 May 2005 03:35
Konum: Almanya

Merhaba

Mesaj gönderen Orhan »

Eline, diline ve gonlune saglik

Ben derlemeyi cesitli komponentlerle defalarca denemistim. Eski derlenmis dosyalar silinmesi gerekiyormus. Netice delphiyi tekrar yuleyerek denedim ve oldu. Tnt komponenti denemedim, Arap diliyle ilgili bir komponenti denedim oldu. Ve mantigi asagi yukari ogrendim. Oldukca kompliziert. Fakat sadra sifa heniz olmadi.

Her sey gonlunuzce olsun
Cevapla