İlginç Bir Hata (Toplama Yapmıyor)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 138
Kayıt: 01 Oca 2008 05:34

İlginç Bir Hata (Toplama Yapmıyor)

Mesaj gönderen Commandx » 09 Nis 2019 08:53

Arkadaşlar otuz adet Edite Girdiğim 30 adet virgüllü sayıları topluyorum (4,3 - 7,5 - 6,5 gibi) ama bu rakamların bulunduğu editlerde harflerde bulunuyor, rakamları harflerden sıyırmak için alttaki isstranumber fonksiyonundan yararlanıyorum
Bu Toplanan sayıları Kendi bilgisayarımda topluyor ve veritabanına yazıyorum bende çalışıyor buraya kadar sıkıntı yok.
Ancak Başka bilgisayarlara götürüp kurduğumda sayılar toplanmıyor veritabanına yazmıyor.

strtofloat, floattostr dönüşümlerini de yapıyorum.
Bu durum Bazı bilgisayarlarda toplama yapıyor veritabanına yazıyor ama bazı bilgisayarlarda bu işlem hiç gerçekleşmiyor.
Daha önce virgülsüz integer tam sayılarda sıkıntı yoktu virgüllü sayıları toplayınca oluşmaya başladı.
bunun nedenini bilen varmı?
acaba Bölgesel ayarlarda dil seçenekleri kısmında bir ayarlama yapılması mı gerekiyor?
XP kurulu makinalarda çalışıyor
Windows 7 -8 10 Yüklü bilgisayarların Bazılarında çalışıyor bazılarında çalışmıyor hata da vermiyor ne ilginç bir şey. 1 aydır bulmaya çalışıyorum bunu

Aklıma gelen şey , bu alttaki fonksiyonda çalışmayan pc lerde uyumsuz bir durum mu oluşuyor anlayamadım

Kod: Tümünü seç

function IsStrANumber(const S: string): Boolean;
var
  P: PChar;
begin
  P      := PChar(S);
  Result := False;
  while P^ <> #0 do
  begin
    if not (P^ in ['0'..'9']) then Exit;
    Inc(P);
  end;
  Result := True;
end;
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
Zamane tickcount'u
except
ON E: Exception do
Begin
Application.MessageBox(Pchar('Can sıkıntısı '+#13+E.Message),'Hata',MBOKk+MB_ICONWARNING);
Abort;
End;
end;

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2142
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: İlginç Bir Hata (Toplama Yapmıyor)

Mesaj gönderen freeman35 » 09 Nis 2019 11:39

decimal ve thousands separator counstand larını değiştir.
hangi sürümde başlamıştı hatırlamıyorum ama delphi unicode kullanan sürümlerinde string i array olarak kullanabilirsin. pchar a gerek yok
ord( S[x] ) gibi kullanabilirsin
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

aligel54
Üye
Mesajlar: 32
Kayıt: 20 Nis 2009 10:34

Re: İlginç Bir Hata (Toplama Yapmıyor)

Mesaj gönderen aligel54 » 17 Nis 2019 03:06

Aşağıdaki şekilde bir fonksiyon oluşturabilirsin.

Kod: Tümünü seç

function SayiyaCevir(GelenSTR:String):double;
var
  i:integer;
  Yazi:String;
  BolgeFormat:TformatSettings;  
begin
  BolgeFormat.DecimalSeparator := ','; 
  Yazi := '';
  for i := 1 to Length(GelenSTR) do
    if GelenSTR[i] in ['0'..'9', ','] then Yazi := Yazi + GelenSTR[i];

  Result := StrToFloatDef(Yazi, 0, BolgeFormat);
end;

Cevapla