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.
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).
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"
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.
Może dodam załącznik i wyjaśni to trochę więcej
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
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
2 minuty googlowania. Dodaj do uses
moduł sysutils
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
Gdzieś za wcześnie średnik postawiłeś. wklej kod