Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мастера, подкажите пожалуйста [D7]


Страницы:   1 2

bioss ©   (2008-11-25 11:00:00) 

Все-таки как в Делфи 7 описываются функции?
После написания классического кода типа
function IsFloat(ch : char; st: string) : Boolean;
begin
if (ch >= '0') and (ch <= '9') // цифры
or (ch = #13) // клавиша <Enter>
or (ch = #8) // клавиша <Backspace>
then
begin
IsFloat := True; // символ верный
Exit; // выход из функции
end;

Выдается сообщение :

statemen expected, but 'FUNCTION' found

бьюсь три часа безрезультатно(


Ega23   (2008-11-25 12:39:00) [1]


> будь проще :) речь идет, всего лишь, о вхождении символа
> в определенный набор, если присмотришься, то ch - это char


Ну я вижу, что char. В TKeyPressEvent тоже char сидит.


Palladin   (2008-11-25 12:35:00) [2]


> В общем - в N-ричной системе счисления. Про dec я нигде
> в ветке не увидел.Могу предположить, что товарищ делает
> проверку ввода чисел в TEdit, но настораживает отсутствие
> DecimalSeparator и присутствие #13.

будь проще :) речь идет, всего лишь, о вхождении символа в определенный набор, если присмотришься, то ch - это char


> Нет. Но ни один из выделенных символов в заявленное множество
> не попадает, однако код нормально компилируется.

а чего бы ему не компилироваться? :) проверка вхождения символа в определенный набор никакого отношения к функциям перевода строки в число не имеет :)


Ega23   (2008-11-25 12:25:00) [3]


> в общем это каком?


В общем - в N-ричной системе счисления. Про dec я нигде в ветке не увидел.
Могу предположить, что товарищ делает проверку ввода чисел в TEdit, но настораживает отсутствие DecimalSeparator и присутствие #13.


> и? вселенная должна прекратить свое существание? :)


Нет. Но ни один из выделенных символов в заявленное множество не попадает, однако код нормально компилируется.


Palladin   (2008-11-25 12:14:00) [4]


> Ega23 ©   (25.11.08 12:10) [19]



> В общем случае - нет.

в общем это каком?


> ShowMessage(IntToStr(StrToInt('$FF')));

и? вселенная должна прекратить свое существание? :)


Ega23   (2008-11-25 12:10:00) [5]


> Result := ch in ['0'..'9', #8, #13];
> или это неверно?


В общем случае - нет.

ShowMessage(IntToStr(StrToInt(' $FF')));


Palladin   (2008-11-25 12:02:00) [6]


> или это неверно?Просто я всегда записываю так, но может
> я незаю каких-нибудь подводных камней.

все нормально, это тоже самое и записано куда лаконичней


дед Маздай   (2008-11-25 11:59:00) [7]

А почему никто не написал так;
Result := ch in ['0'..'9', #8, #13];
или это неверно?
Просто я всегда записываю так, но может я незаю каких-нибудь подводных камней.


bioss   (2008-11-25 11:22:00) [8]

sniknik,Amoeba, Palladin БОЛЬШОЕ СПАСИБО!


Ega23   (2008-11-25 11:21:00) [9]


> Да) Ну подскажи тогда, где сдесь правильное место?


Букварь по паскалю почитай. Любой. Какова структура программы? С какого волшебного слова начинается тело программы? Каким волшебным словом оно заканчивается? Зачем секция uses? ЗАчем нужна секция uses в разделе implemenation? Что это за раздел?

Ну и т.д. и т.п.


sniknik   (2008-11-25 11:21:00) [10]

в букварь!
это не то что нужно подсказывать. имхо. научить думать в правильном направлении  еще куда ни шло.


bioss   (2008-11-25 11:19:00) [11]


> Palladin ©   (25.11.08 11:16) [11]
> > bioss ©   (25.11.08 11:13) [8]читать второе предложение
> в [6] до полного просветления. и не называй этот бред "классический
> код", бо классику ты не знаешь

Спасибо! Буду учить классику))


bioss   (2008-11-25 11:17:00) [12]


> sniknik ©   (25.11.08 11:13) [9]
> > statemen expected, but 'FUNCTION' foundпытайся понять
> что тебе в ошибках пишут. они не просто та набор слов.конкретно
> здесь, "ожидается statement, но найдена 'FUNCTION'", что
> непонятного? не "функция описана неправильно" чтобы искать
> как ее описывать, а "ожидается что-то, а найдена функция"
> т.е. в неправильном месте...


Да) Ну подскажи тогда, где сдесь правильное место?


Palladin   (2008-11-25 11:16:00) [13]


> bioss ©   (25.11.08 11:13) [8]

читать второе предложение в [6] до полного просветления. и не называй этот бред "классический код", бо классику ты не знаешь


sniknik   (2008-11-25 11:15:00) [14]

> Но сейчар надо срочно решать задачу
с таким подходом срочно не бывает, обычно бывает гораздо медленнее чем если бы сначала прочитал букварь.


sniknik   (2008-11-25 11:13:00) [15]

> statemen expected, but 'FUNCTION' found
пытайся понять что тебе в ошибках пишут. они не просто та набор слов.
конкретно здесь, "ожидается statement, но найдена 'FUNCTION'", что непонятного? не "функция описана неправильно" чтобы искать как ее описывать, а "ожидается что-то, а найдена функция" т.е. в неправильном месте...

------------
вот пришёл ты с работы, садишься ужинать, снимаешь ботинки, и ставишь их на стол... и что на тебя жена будет кричать, "неправильные ботинки"? или "ты куда гад их поставил!". разницу улавливаешь?


bioss   (2008-11-25 11:13:00) [16]


> Amoeba ©   (25.11.08 11:04) [3]
> Переписать так:function IsFloat(ch : char; st: string) :
>  Boolean;begin  if (ch >= '0') and (ch <= '9') // цифры
>  or (ch = #13) // клавиша <Enter>  or (ch = #8) // клавиша
> <Backspace>  then    Result := True; // символ верныйend;
> и читать букварь

Да, букварь читать точно нужно) Но сейчар надо срочно решать задачу, а пока не получается даже функцию описать((

вот я записал ваш код, ОШИБКА ТА ЖЕ!!! вот полный текст

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

begin
function IsFloat(ch : char; st: string) : Boolean;
begin
if (ch >= '0') and (ch <= '9') // цифры
or (ch = #13) // клавиша <Enter>
or (ch = #8) // клавиша <Backspace>
then
  Result := True; // символ верный
end;
end.


Amoeba   (2008-11-25 11:08:00) [17]

Ни if ... then, ни Exit не нужны.


Palladin   (2008-11-25 11:08:00) [18]

я про глобально в модуле, а не про эту функцию конкретно. и надеюсь ты знаешь, что нельзя объявлять функцию/процедуру внутри операторных скобок?


bioss   (2008-11-25 11:06:00) [19]


> Palladin ©   (25.11.08 11:03) [2]
> код нормально форматируй и все будет хорошо... а пока можешь
> посчитать сколько у тебя begin, сколько end и удивится

Ну да) но деле не в этом ende- его я просто не докопировал


Amoeba   (2008-11-25 11:06:00) [20]

Правильно будет так:

function IsFloat(ch : char; st: string) : Boolean;
begin
Result := (ch >= '0') and (ch <= '9') // цифры
or (ch = #13) // клавиша <Enter>
or (ch = #8) // клавиша <Backspace>
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо