Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверка на число
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Zevs5
Необходимо проверить трёх значный символ, число ли это

Не совсем Паскалевский вопрос потому что использую Делфи но принцып то один.
Нужно проверить введённый символ (однозначный, двузначный либо трех значный) на то, является ли он числом и потом если это число занести его в числовой массив.

Потомучто если я конечно не ошибаюсь если объявлен числовой массив то строковое значение туда не запихнёшь.
volvo
Цитата
Нужно проверить введённый символ (однозначный, двузначный либо трех значный)
blink.gif Символ, насколько я понимаю, может быть только однозначным...

А по поводу задачи - Val тебе в помощь (это для Паскаля, в Дельфи есть TryStrToInt)... По результату преобразования можешь судить о его успехе...
Zevs5
Цитата(volvo @ 20.10.2006 1:39) *

blink.gif Символ, насколько я понимаю, может быть только однозначным...

А по поводу задачи - Val тебе в помощь (это для Паскаля, в Дельфи есть TryStrToInt)... По результату преобразования можешь судить о его успехе...


Извиняюсь за не точность я имел ввиду не символ как таковой, а набор символов состоящий из одного символа, двух либо трёх символов.

Функция TryStrToInt() тип Boolean ? или другой?
volvo
function TryStrToInt(const S: string; out Value: Integer): Boolean;

Описана в SysUtils ... Что характерно - ее реализация:
function TryStrToInt(const S: string; out Value: Integer): Boolean;
var E: Integer;
begin
Val(S, Value, E);
Result := E = 0;
end;
(я же говорил, что Val не подведет... smile.gif )
Zevs5
Нажмите для просмотра прикрепленного файлаМожет я не в ту степь полез, но у меня массив Integer, а все примеры попадаются с string.

Вот часть кода, необходимо получить минимальное значение массива.

Код

Form1.Memo1.Lines.Add(IntToStr(si));
Form1.Memo1.Lines.Add(IntToStr(di));
Form1.Memo1.Lines.Add(IntToStr(fi));
Form1.Memo1.Lines.Add(IntToStr(gi));
Form1.Memo1.Lines.Add(IntToStr(hi));
Form1.Memo1.Lines.Add(IntToStr(li));


for i := 1 to 6 do
ar[i] := StrToInt(Form1.Memo1.Lines[i-1]);


show := TryStrToInt(IntToStr(ar[i]));

Form1.Label12.Caption := IntToStr(show);


---------------------------------------------------------------------------------------------------------------------------------------
только третью неделю как delphi в глаза увидел.
volvo
Ну и зачем тебе понадобилось определять, число это или нет, ПОСЛЕ того, как ты уже заполнил (вернее, попытался заполнить) числовой массив? Если бы в Memo было значение, которое нельзя перевести в число, то к моменту вызова

show := TryStrToInt(IntToStr(ar[i]));
программа уже завершилась бы с ошибкой, так что...

Ты полностью задание приведи, а то совершенно неясно, что именно тебе надо сделать, и зачем.
Zevs5
Всё решил эта строка глюк в мозгах
show := TryStrToInt(IntToStr(ar[i]));


Я сравнил все записи через функцию Min();
Спасибо за терпение, TryStrToInt() нужна мне была в начале при заполнении массива.

Только недели три как делфи увидел ещё не обжился, до этого PHP изучал и чуть чуть Perl

А ещё такой вопрос можно ли другим способом заполнить этот же массив этими же значениями не используя Memo1?
мисс_граффити
Конечно!
Обычно массивы заполняют через StringGrid (закладка Additional). При желании можно вводить по одному элементу через Edit (правда, тогда тебе лучше взять другой компонент - MaskEdit, и наложить ограничения на ввод символов кроме цифр).
Еще можно написать обработчик события и опять же блокировать ввод не того, что нужно.
Zevs5
Я через Edit вводил, сделал ограничение не более 3 символов, а потом ещё проверил цыфры ли это или нет.
Этот примитивный практический пример дали для курсовой работы, но всётаки сделал.
Спасибо за терпение и помощь.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.