Wczytywanie liczb zmiennoprzecinkowych z klawiatury – kropka czy przecinek jako separator dziesiętny?

0

Witam.
Czy w Lazarusie można zmienić separator części całkowitej od ułamkowej z kropki na przecinek?
Przejrzałem opcje ale na nic takiego nie znalazłem.
Przy wczytywaniu danych z klawiatury należy użyć kropki ale byłoby łatwiej i szybciej użyć przecinka.

0

Jeżeli chodzi o wprowadzanie licz w skompilowanych aplikacjach to zależy od ustawień opcji regionalnych w systemie, można te wymusić zmianę separatora dla samej aplikacji

DefaultFormatSettings.DecimalSeparator:=',';

Jeżeli chodzi o edytor kodu, to nie, ponieważ taka specyfikacja języka (pascal).

0

Wstawiłem to polecenie go programu głównego i do procedury do której to polecenie powinno dotyczyć ale pojawia się ten sam błąd

ZapisKlawiaturaDysk.pas(26,5) Error: Identifier not found "DefaultFormatSettings"
0

jeżeli to jest aplikacja konsolowa to we własnym zakresie musisz zamienić ciąg na liczbę, np:

program Project1;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, SysUtils
  { you can add units after this };

{$R *.res}

var
  d: double;
  s: String;
  fs: TFormatSettings;
begin
  fs.DecimalSeparator:=',';
  ReadLn(s);
  if TryStrToFloat(s, d, fs) then
  WriteLn(d)
  else
  WriteLn('Podano nieprawidłową liczbę');
  ReadLn();
end.
0

Może dodam załącznik i wyjaśni to trochę więcej

0

Ale tu nie ma co wyjaśniać @Paweł Dmitruk podał ci gotowe rozwiązanie wystarczy, że w sfojej funkcji dopiszesz w sekcji var fs: TFormatSettings; i val zamienisz na TryStrToFloat

0

Nie działa
Kompilowany projekt, Obiekt docelowy:

ZapisKlawiaturaDysk.exe: Kod wyjścia 1,Błędy: 3,
ZapisKlawiaturaDysk.pas(32,9) Error: Identifier not found "TFormatSettings"
ZapisKlawiaturaDysk.pas(32,24) Error: Error in type definition
ZapisKlawiaturaDysk.pas(34,8) Error: Illegal qualifier
0

2 minuty googlowania. Dodaj do uses moduł sysutils

0

Błąd Kompilowany projekt, Obiekt docelowy:

ZapisKlawiaturaDysk.exe: Kod wyjścia 1,Błędy: 1,
ZapisKlawiaturaDysk.pas(10,4) Fatal: Syntax error, "BEGIN" expected but "identifier SYSUTILS" found
0

Gdzieś za wcześnie średnik postawiłeś. wklej kod

1 użytkowników online, w tym zalogowanych: 0, gości: 1