Merhaba;
Belirli karakter sayısından sonra * eklemek istiyorum.
aa*bb*cc* gibi aa'dan hemen sonra * ekleniyor. editte karakter girişi yapmaya devam ettiğimde,
* sürekli en sonda, (aabb**) oluyor sonrasında eklediğim karakterlerinde sonuna kalıyor bu durumu nasıl çözebilirim?
function Yildizekle(Harf: String): String;
var
N: Integer;
begin
for N := 1 to length(Harf) do
begin
if Harf.length = 2 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
if Harf.length = 5 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
Result := Harf;
end;
end;
end;
procedure TForm1.Edit2ChangeTracking(Sender: TObject);
begin
Edit2.Text := Yildizekle(Edit2.Text);
end;
(20-07-2018, Saat: 23:35)dilo Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba;
Belirli karakter sayısından sonra * eklemek istiyorum.
aa*bb*cc* gibi aa'dan hemen sonra * ekleniyor. editte karakter girişi yapmaya devam ettiğimde,
* sürekli en sonda, (aabb**) oluyor sonrasında eklediğim karakterlerinde sonuna kalıyor bu durumu nasıl çözebilirim?
function Yildizekle(Harf: String): String;
var
N: Integer;
begin
for N := 1 to length(Harf) do
begin
if Harf.length = 2 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
if Harf.length = 5 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
Result := Harf;
end;
end;
end;
procedure TForm1.Edit2ChangeTracking(Sender: TObject);
begin
Edit2.Text := Yildizekle(Edit2.Text);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Length(Edit1.Text) = 0 then
begin
//başlangıçta her zaman mod 0 çıktığı için engellemek için....
end
else
if (Length(Edit1.Text) mod 2) = 0 then
begin
Key := char(VK_SEPARATOR); ///yıldız kodunu bulamadım.
end;
end;
Yıldız char kodunu bulamadım. İstersen bir araştır. Mod alarak işe başlıyoruz zaten uzunluğun modunu alıp işlemleri yapıyoruz.
eğer bu db bir alan ise * ' " ~ gibi özel karakterler kullanmamanızı tavsiye ederim.
Öteki taraftan fonksiyon yazmanıza gerek yok. fillchar fonksiyonu işinizi görecektir.
(21-07-2018, Saat: 00:07)hyperxman Adlı Kullanıcıdan Alıntı: [ -> ] (20-07-2018, Saat: 23:35)dilo Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba;
Belirli karakter sayısından sonra * eklemek istiyorum.
aa*bb*cc* gibi aa'dan hemen sonra * ekleniyor. editte karakter girişi yapmaya devam ettiğimde,
* sürekli en sonda, (aabb**) oluyor sonrasında eklediğim karakterlerinde sonuna kalıyor bu durumu nasıl çözebilirim?
function Yildizekle(Harf: String): String;
var
N: Integer;
begin
for N := 1 to length(Harf) do
begin
if Harf.length = 2 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
if Harf.length = 5 then
begin
Harf := Harf + '*';
// Harf.SelStart := length(Harf.Text);
end
else
begin
Result := Harf;
end;
end;
end;
procedure TForm1.Edit2ChangeTracking(Sender: TObject);
begin
Edit2.Text := Yildizekle(Edit2.Text);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Length(Edit1.Text) = 0 then
begin
//başlangıçta her zaman mod 0 çıktığı için engellemek için....
end
else
if (Length(Edit1.Text) mod 2) = 0 then
begin
Key := char(VK_SEPARATOR); ///yıldız kodunu bulamadım.
end;
end;
Yıldız char kodunu bulamadım. İstersen bir araştır. Mod alarak işe başlıyoruz zaten uzunluğun modunu alıp işlemleri yapıyoruz.
Sanırım dikkatinizden kaçtıı; FMX'de
Edit1KeyPress kullanımı yok!
(21-07-2018, Saat: 15:05)serhat Adlı Kullanıcıdan Alıntı: [ -> ] (21-07-2018, Saat: 00:07)hyperxman Adlı Kullanıcıdan Alıntı: [ -> ]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Length(Edit1.Text) = 0 then
begin
//başlangıçta her zaman mod 0 çıktığı için engellemek için....
end
else
if (Length(Edit1.Text) mod 2) = 0 then
begin
Key := char(VK_SEPARATOR); ///yıldız kodunu bulamadım.
end;
end;
Yıldız char kodunu bulamadım. İstersen bir araştır. Mod alarak işe başlıyoruz zaten uzunluğun modunu alıp işlemleri yapıyoruz.
Sanırım dikkatinizden kaçtıı; FMX'de Edit1KeyPress kullanımı yok!
A pardon konunun nerede açıldığına dikkat etmedim. Orada kalsın o da bir kaynak ne de olsa fmx içinde birşeyler dusunecegiz artık
Tekrar merhaba. Kullanıcı manuel * olarak giriş yaptığında if (Say <> 3) or (Say <> 6) or (Say <> 9) then kontrolü bir işe yaramıyor.
Her iki karakterden sonra * if then kontrolü doğru yapmıyor.
function Yildizekle(Const Karakter: String): String;
var
Bul: String;
Say, I: Integer;
begin
Say := 0;
Bul := '*';
for I := 1 to Length(Karakter) do
begin
Inc(Say);
if Pos(Bul, Karakter[I]) > 0 then
begin
if (Say <> 3) or (Say <> 6) or (Say <> 9) then
begin
showmessage('yanlış');
Exit;
end;
end;
end;
Result := Karakter;
end;
procedure TForm1.Edit2ChangeTracking(Sender: TObject);
begin
Edit2.Text := Yildizekle(Edit2.Text);
end;
(21-07-2018, Saat: 15:18)dilo Adlı Kullanıcıdan Alıntı: [ -> ]Tekrar merhaba. Kullanıcı manuel * olarak giriş yaptığında if (Say <> 3) or (Say <> 6) or (Say <> 9) then kontrolü bir işe yaramıyor.
Her iki karakterden sonra * if then kontrolü doğru yapmıyor.
function Yildizekle(Const Karakter: String): String;
var
Bul: String;
Say, I: Integer;
begin
Say := 0;
Bul := '*';
for I := 1 to Length(Karakter) do
begin
Inc(Say);
if Pos(Bul, Karakter[I]) > 0 then
begin
if (Say <> 3) or (Say <> 6) or (Say <> 9) then
begin
showmessage('yanlış');
Exit;
end;
end;
end;
Result := Karakter;
end;
procedure TForm1.Edit2ChangeTracking(Sender: TObject);
begin
Edit2.Text := Yildizekle(Edit2.Text);
end;
KeyDown olayı ile hallediliyormuş. @
serhat KeyPress İLE AYNI İŞİ YAPAN KeyDown VARMIŞ!
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if (Length(Edit1.Text) mod 3) = 0 then
begin
KeyChar := char(vkSeparator); ///yıldız kodunu bulamadım.
end;
end;
İyi çalışmalar.