1 / 1 / 1
Регистрация: 17.07.2012
Сообщений: 139
1

FormatSettings.DecimalSeparator

12.11.2013, 17:03. Показов 8732. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Не могли бы вы мне объяснить почему в FormatSettings он выдаёт ошибку

Код программы:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
 
begin
case Key of
   '0'..'9', #8: ;
   '.',',':
   begin
 
      Key:=FormatSettings.DateSeparator;
      if pos(FormatSettings.DecimalSeparator,Edit1.Text) <> 0
      then Key:=#0;
end;
#13:Edit2.SetFocus;
else key:=0#;
end;
end;
 
 
 
end;
 
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
   '0'..'9', #8: ;
   '.',',':
   begin
   Key:=FormatSettings.DecimalSeparator;
   if pos(FormatSettings.DecimalSeparator,Edit1.Text) <> 0
      then Key:=#0;
end;
#13:Button1.SetFocus;
else Key:= Char(0);
end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
 
   usd:real;
   k:real;
   rub:real;
 
begin
 
   k:=StrToFloat(Ediit1.Text);
   usd:=StrToFloat(Ediit2.Text);
   rub:=usd*k;
 
Label4.caption:=FloatToStr(usd)+'$ = '
                FloatToStrF(rub,ffCurrency,6,2);
 
end;
 
end.
Ошибки:

[Error] Unit1.pas(43): Undeclared identifier: 'FormatSettings'
[Error] Unit1.pas(43): Missing operator or semicolon
[Error] Unit1.pas(43): Statement expected, but expression of type 'Char' found
[Error] Unit1.pas(44): Incompatible types
[Error] Unit1.pas(44): ')' expected but ',' found
[Error] Unit1.pas(48): Constant expression expected
[Error] Unit1.pas(62): Missing operator or semicolon
[Error] Unit1.pas(62): Statement expected, but expression of type 'Char' found
[Error] Unit1.pas(63): Incompatible types
[Error] Unit1.pas(63): ')' expected but ',' found
[Error] Unit1.pas(74): Statement expected but end of file found
[Error] Unit1.pas(20): Unsatisfied forward or external declaration: 'TForm1.Edit2KeyDown'
[Error] Unit1.pas(22): Unsatisfied forward or external declaration: 'TForm1.Edit2KeyPress'
[Error] Unit1.pas(23): Unsatisfied forward or external declaration: 'TForm1.FormClick'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'

Добавлено через 11 минут
чё никто не знает что ли???????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2013, 17:03
Ответы с готовыми решениями:

Поток и ф-ции с FormatSettings
Нужно вызвать функцию timetostr в потоке. В фак'е сказано, что нужно вызывать функцию таким...

DecimalSeparator
Ребята я в программировании новичек, хоть и учусь уже почти три года на программиста=) ну все же...

Undeclared identifier: DecimalSeparator
Здравствуйте. Пытаюсь написать программку, в которой в первое поле будет вводиться текст, во...

DecimalSeparator невиден в дополнительном модуле
Нужно объявить одну функцию в дополнительному модуле, в нем используется DecimalSeparator. ...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
12.11.2013, 18:03 2
Цитата Сообщение от ulx05 Посмотреть сообщение
почему в FormatSettings он выдаёт ошибку
Потому что этот код не для динозавров типа Delphi7, а для более современных компиляторов. В Delphi 2009 и выше он не будет выдавать ошибок...
1
1 / 1 / 1
Регистрация: 17.07.2012
Сообщений: 139
12.11.2013, 18:21  [ТС] 3
ясно спасибо
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.01.2019, 08:44 4
Случайно занесло в эту тему, поправлю.
Цитата Сообщение от volvo Посмотреть сообщение
Потому что этот код не для динозавров типа Delphi7, а для более современных компиляторов.
Это не так, просто нужно объявить переменную.
Delphi
1
2
3
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var FormatSettings:TFormatSettings;
begin
0
Модератор
9238 / 6021 / 2374
Регистрация: 21.01.2014
Сообщений: 25,730
Записей в блоге: 3
08.01.2019, 10:14 5
Цитата Сообщение от Puporev Посмотреть сообщение
просто нужно объявить переменную
В Д7 достаточно удалить FormatSettings. оставив просто DecimalSeparator
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.01.2019, 10:18 6
Я просто к тому что использовать FormatSettings в Д7 можно, а то учитывая авторитет volvo, как ТС, примут его ответ за истину.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
08.01.2019, 11:50 7
Цитата Сообщение от Puporev Посмотреть сообщение
использовать FormatSettings в Д7 можно
Нет, в таком виде его использовать нельзя. Мало просто объявить переменную, она будет заполнена мусором (да, переменная локальная, что было в стеке на момент входа в метод - то и в переменной останется), и с нее толку - как с козла молока. Что, скажем, при таком локальном описании будет храниться в поле DateSeparator, которое используется в коде ТС-а? Какой символ?
0
08.01.2019, 11:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2019, 11:50
Помогаю со студенческими работами здесь

Поставить Decimalseparator в Edit при выводе результата
Добрый день! Сделал програмку, которая в свою очередь подсчитывает сколько Kw потрачено за...

Как запретить ввод цифрого разделителя (decimalseparator) первым символом в поле edit (Delphi)?
имеется компонент TEdit, не пустой, фильтруется на ввод символов с помощью EditKeyPress, перед...

Decimalseparator в XE 4
Недавно перешел на XE4 пишу проект и не могу найти decimalseparator . Раньше делал так:...

Использование DecimalSeparator
В компонент RichEdit загружается текстовый файл. Текстовый файл имеет вид 1 20.4 1.3 2 30.5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru