Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Parayı çarpma ve toplama işlemi
#11
(16-06-2017, Saat: 23:42)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(16-06-2017, Saat: 23:28)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Kısmen yaptım, ama 15,000 * 3 =  45,000 olması lazım fakat 45 olarak veriyor virgülden sonraki değerleri nasıl alabilirim?




function NoktaConvert(StrNokta: String): String; // Noktayı virgüle çevir
begin
 Result := StringReplace(StrNokta, '.', ',', [rfReplaceAll, rfIgnoreCase]);
end;

procedure TForm4.Hesap(Sender: TObject); // Hesaplama
var
 Fiyat, Adet: Real;
begin
if LV.Items.Count > 0 then
 begin
   With LV do
   begin
     Items.BeginUpdate;
     try
       for I := Items.Count - 1 downto 0 do
       begin
         Fiyat := StrToFloat(NoktaConvert(Items[I].SubItems[2]));
         Adet := StrToFloat(Items[I].SubItems[3]);

         Items[I].SubItems[4] := FloatToStr(Fiyat * Adet);
       end;
     finally
       Items.EndUpdate;
     end;
   end;
 end;
end;

Merhaba Serhat Bey,
Kurmuş olduğunuz algoritmada mantıksal bir hata (fatal error Smile ) var.
Bu algoritmayı adımlayacak olursak;
Örneğin Tutar = 15.000,00 TL olsun, Adet = 3 olsun
NoktaConvert adımında Tutar = 15,000,00 olacaktır.
Fiyat * Adet = tahminimce 45 gibi bir sonuç olacaktır. (Test imkanım şu an için olmadığından sonuç konusunda net birşey söyleyemiyorum)




Tam olarak ne demek ,istediğinizi anlayamadım edite 15.000 bin olarak alıyorum 15.000,00 olarak değil ayrıntı verir misiniz?





procedure TForm2.FiyatChange(Sender: TObject);
var
 Rp: String;
 Rph: Currency;
begin
 Rp := Fiyat.Text;
 Rp := StringReplace(Rp, ',', '', [rfReplaceAll, rfIgnoreCase]);
 Rp := StringReplace(Rp, '.', '', [rfReplaceAll, rfIgnoreCase]);
 Rph := StrToCurrDef(Rp, 0);
 Fiyat.Text := FormatCurr('#,###', Rph);
 Fiyat.SelStart := length(Fiyat.Text);
end;


Para formatına çevirmek için bu yöntemi kullanıyorum
Cevapla
#12
(17-06-2017, Saat: 06:37)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(16-06-2017, Saat: 23:42)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba Serhat Bey,
Kurmuş olduğunuz algoritmada mantıksal bir hata (fatal error Smile ) var.
Bu algoritmayı adımlayacak olursak;
Örneğin Tutar = 15.000,00 TL olsun, Adet = 3 olsun
NoktaConvert adımında Tutar = 15,000,00 olacaktır.
Fiyat * Adet = tahminimce 45 gibi bir sonuç olacaktır. (Test imkanım şu an için olmadığından sonuç konusunda net birşey söyleyemiyorum)




Tam olarak ne demek ,istediğinizi anlayamadım edite 15.000 bin olarak alıyorum 15.000,00 olarak değil ayrıntı verir misiniz?





procedure TForm2.FiyatChange(Sender: TObject);
var
 Rp: String;
 Rph: Currency;
begin
 Rp := Fiyat.Text;
 Rp := StringReplace(Rp, ',', '', [rfReplaceAll, rfIgnoreCase]);
 Rp := StringReplace(Rp, '.', '', [rfReplaceAll, rfIgnoreCase]);
 Rph := StrToCurrDef(Rp, 0);
 Fiyat.Text := FormatCurr('#,###', Rph);
 Fiyat.SelStart := length(Fiyat.Text);
end;


Para formatına çevirmek için bu yöntemi kullanıyorum

Deneme.gif

Not: Edit'in OnChange olayında virgül (,) karakteri girilemediği için bu olaydaki kodlarınızı, Button!un OnClick olayında kullandım.
         Bu kısımda da bir mantıksal hata var. Son kullanıcı Tutarın ondalık kısımlarını giremiyor.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#13
Alıntı:
procedure TForm2.FiyatChange(Sender: TObject);
var
 Rp: String;
 Rph: Currency;
begin
 Rp := Fiyat.Text;
 Rp := StringReplace(Rp, ',', '', [rfReplaceAll, rfIgnoreCase]);
 Rp := StringReplace(Rp, '.', '', [rfReplaceAll, rfIgnoreCase]);
 Rph := StrToCurrDef(Rp, 0);
 Fiyat.Text := FormatCurr('#,###', Rph);
 Fiyat.SelStart := length(Fiyat.Text);
end;
Para formatına çevirmek için bu yöntemi kullanıyorum

farklı senaryolarda hata verecek procedure gibi,
programın çalıştığı bilgisayarın yerel ayarlarını düşünelim, kiminde ondalık ayracı nokta kiminde virgül,
sonra ondalık sonrası kaç hane tanımlı bir mi iki mi üç mü.

bu procedure sayıyı noktasız virgülsüz hale getiriyor sonra currency e çeviriyor, ondalık kaybolur

sayımız 1.234,56 olsun   1.234 tam kısım, 56 ondalık kısım
bu procedure ile sayımız önce 123456 olur
sonra 123.456 olur
Cevapla
#14
Farklı bilgisayarlarda sıkıntı yaşamamak için ne yapmalıyım?
Cevapla
#15
yukarda vermiştim tekrar yazıyorum

var
 WFormatoBR: TFormatSettings;
begin
 WFormatoBR                     := TFormatSettings.Create;
 WFormatoBR.DecimalSeparator    := ',';
 WFormatoBR.ThousandSeparator   := '.';
 System.SysUtils.FormatSettings := WFormatoBR;
end;

kullanıcının sayısal işlem girişlerinde kullanabileceğin ücretsiz/ücretsiz componentler mevcut

ilk aklıma gelen
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#16
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in [#8, '0'..'9', '-', DecimalSeparator]) then
   ShowMessage('Invalid key: ' + Key);
   Key := #0;
 end
 else if ((Key = DecimalSeparator) or (Key = '-')) and 
         (Pos(Key, Edit1.Text) > 0) then begin
   ShowMessage('Invalid Key: twice ' + Key);
   Key := #0;
 end
 else if (Key = '-') and 
         (Edit1.SelStart <> 0) then begin
   ShowMessage('Only allowed at beginning of number: ' + Key);
   Key := #0;
 end;
end;

internetten bulduğum kod parçası kendine göre uyarlayabilirsin
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Rakam ve Karakterli Toplama OZCANK 20 1.296 16-04-2019, Saat: 13:03
Son Yorum: SimaWB
  HTML Parse İşlemi 10.Köy 7 506 18-03-2019, Saat: 17:47
Son Yorum: r3n4m3
  Bilgisayardan Cep telefonuna konum gönderme işlemi Bay_Y 17 1.877 11-12-2018, Saat: 14:44
Son Yorum: Bay_Y
  fastreport nesnesinde ki memoları tek memo da toplama nmtsltn 13 1.912 23-11-2018, Saat: 15:53
Son Yorum: mcuyan
  XML işlemi ahmetb 9 1.045 04-10-2018, Saat: 23:35
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi