Delphi Can

Orjinalini görmek için tıklayınız: Edit Sayı Çevirme
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhaba , Arkadaşlar Edit5.Text alanım var bu alana karakter ve virgül girişini engelledim, fakat rapor alırken hata veriyor yardımcı olabilir misiniz?

İlk Önce ;

Code:procedure TForm19.Edit5KeyPress(Sender: TObject; var Key: Char);
Begin
     if not (key in ['0'..'9', #8]) then
 begin
   Key:=#0;
 end;
 end;


procedure TForm19.Edit5Exit(Sender: TObject);
begin
Edit5.Text:=FormatFloat('#,##.00',StrToFloat(Edit5.Text));
end;
End.

Sonra Rapor da ;

:'HAVING (Sum(TBLFATUIRS.BRUTTUTAR - SAT_ISKT - GEN_ISK1T - GEN_ISK2T - GEN_ISK3T)>=$'+Edit5.Text+' AND TBLFATUIRS.FTIRSIP=''1'' AND month(tarih)='+#39+''+Edit1.Text+''+#39+') AS TT ' +

Burayı $'+Edit5.Text+'

StrToInt(IntToStr($'+Edit5.Text+')) yaptım yine " Incorret Syntax Near ',' " hatası verdi.
procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('#,##.00',StrToFloatDef(StrValue,0));
end;
End.
Kendinizi Stored Procedure kullanmaya alıştırsanız; hiç bu sorunlarla uğraşmayacaksınız ama.. (Sizin nezdinizde genele söylüyorum)
(08-09-2019, Saat: 22:30)faktoral Adlı Kullanıcıdan Alıntı: [ -> ]procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('#,##.00',StrToFloatDef(StrValue,0));
end;
End.

Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

(10-09-2019, Saat: 09:29)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]
(08-09-2019, Saat: 22:30)faktoral Adlı Kullanıcıdan Alıntı: [ -> ]procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('#,##.00',StrToFloatDef(StrValue,0));
end;
End.

Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

Bu şekilde hata vermiyor ama 5000 TL yerine 5 TL yani 5.000 olarak rapor alıyor

procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('0,',StrToFloatDef(StrValue,0));
end;
End.
(10-09-2019, Saat: 09:29)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]
(08-09-2019, Saat: 22:30)faktoral Adlı Kullanıcıdan Alıntı: [ -> ]procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('#,##.00',StrToFloatDef(StrValue,0));
end;
End.

Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

(10-09-2019, Saat: 09:29)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

Bu şekilde hata vermiyor ama 5000 TL yerine 5 TL yani 5.000 olarak rapor alıyor

procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('0,',StrToFloatDef(StrValue,0));
end;
End.


Merhabalar,

--> 5.000,00 TL
Edit5.Text:=FormatFloat('#,##0.00 TL',StrToFloatDef(StrValue,0));

veya

--> 5.000 TL
Edit5.Text:=FormatFloat('#,##0 TL',StrToFloatDef(StrValue,0));


Kolay gelsin.
(10-09-2019, Saat: 09:29)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]
(08-09-2019, Saat: 22:30)faktoral Adlı Kullanıcıdan Alıntı: [ -> ]procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('#,##.00',StrToFloatDef(StrValue,0));
end;
End.

Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

(10-09-2019, Saat: 09:29)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba faktoral kardeşim kodu yazdığın gibi kullandım ama aynı hatayı veriyor başka yerde değişiklik yapmam gerekiyor mu?

Bu şekilde hata vermiyor ama 5000 TL yerine 5 TL yani 5.000 olarak rapor alıyor

procedure TForm19.Edit5Exit(Sender: TObject);
var
StrValue:string;
begin
StrValue:= Edit5.Text;
Edit5.Text:=FormatFloat('0,',StrToFloatDef(StrValue,0));
end;
End.

Ben genel olarak 
FormatFloat(',0.00',<Float>); Yada
FormatFloat(',0.00',StrToFloatDef(StrValue,0));
Böyle kullanıyorum. Şimdiye kadarda yıllardır problem yaşamadım.
Merhaba, Edit5.text de 5.000 gösterip rapor alırken 5000 olarak nasıl yapabilirim?
(10-09-2019, Saat: 11:26)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba, Edit5.text de 5.000 gösterip  rapor alırken 5000 olarak nasıl yapabilirim?

FastReport da memo DisplayFormattan istediğin gibi düzenleyebirsin.

FormatStr = %2
Kind = fkNumeric

Gibi Yada Sorguda o alanı Formatlayıp gönderebilirsin
faktoral
[quote pid='31005' dateline='1568105151']
(10-09-2019, Saat: 11:26)OZCANK Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba, Edit5.text de 5.000 gösterip  rapor alırken 5000 olarak nasıl yapabilirim?

FastReport da memo DisplayFormattan istediğin gibi düzenleyebirsin.

FormatStr = %2
Kind = fkNumeric

Gibi Yada Sorguda o alanı Formatlayıp gönderebilirsin
[/quote]
Şöyle bir kod kullandım noktalama ve virgüllerden kurtulmak için;

function Value(Str: String): Double;
var
i:integer;
begin
for i:=1 to length(Str) do
Begin
if Str='.' then
delete(Str,i,1);
End;
result:= StrToFloat(Str);
end;

sonra da Rapor buttonunun rapor text almadan ki baş kısmına ;

Edit5.Text := FloatToStr(Value(Edit5.Text)


bu durum dada Convert edemedim diyor.

raised exception class EConvertError with message ''5.000' is not a valid floating point value'. Process stopped. Use Step or Run to continue.
Edit5.Text := FloatToStr(Value(Edit5.Text))

Burada artık "Value(Edit5.Text)"  Float değil onun için hata veriyor.
Kod:
function SadeceRakamlar(s: string): string;
var
  i: integer;
  rsp: string;
begin
  Result := s;
  if Length(s) < 1 then Exit;
  rsp := '';
  for i := 1 to Length(s) do
  begin
    if s[i] in ['0'..'9'] then
      rsp := rsp + s[i];
  end;
  Result := rsp;
end;

Bunu Kullanın. Ve convert etmeyin. Sonuc size rakamlardan ouşan bir string olarak dönecek.
Sayfalar: 1 2