Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 278

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте.
Как можно определить количество заполненных строк компонента StringGrid1?
Сколько разрядов в стандартной записи вещественного числа? И ещё назовите, пожалуйста, стандартную функцию с ее параметрами для преобразования вещественного числа в строку с указанием формата записи числа.
С уважением, Сергей Анатольевич.

Полушин Сергей Анатольевич Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Полушин Сергей Анатольевич (статус: Посетитель)
Вопрос отправлен: 21 января 2007, 21:56
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Вадим К

>>Как можно определить количество заполненных строк компонента StringGrid1?
А что же сложного? Для начала определимся, что такое "заполненая строка"
для этого напишем функцию
function LineFull(sg:TStringGrid,l:integer):boolean;
var i:integer;
begin
result:=false;
for i:=0 to sg.ColCount-1 do
if Trim(sg.Cells[i,l])='' then exit;
result:=true;
end;
Я предположил, что заполненая строка не должна содержать незаполненых строк. ячейки с одними пробелами считаются пустыми.
Теперь фунцция, которая считает количество заполненых строк.
functio CountFullLine(sg:TStringGrid):integer;
var i:integer;
begin
result:=0;
for i:=0 to sg.RowCount-1 do
if LineFull(sg,i) then inc(result);
end;
Вызываем так count:=CountFullLine(StringGrid1);
------------
>>Сколько разрядов в стандартной записи вещественного числа?
Всё зависит от типа переменной: Single(около 7), Extendet(18),Double(15). Но ответить точно на этот вопрос нельзя. Нельзя в десятичной системе счисления, но можно в двоичной. Достаточно посмотреть в хелпе, скоко розрядов отводиться под мантису. Просто поищите в хелпе по словам Real Double. Там всё есть!
----------------
>>И ещё назовите, пожалуйста, стандартную функцию с ее параметрами для преобразования вещественного числа в строку с указанием формата записи числа.
Как не странно, это
function FloatToStrF(Value: Extended; Format: TFloatFormat; Precision: Integer; Digits: Integer): string; overload;
первый параметр собственно само число.
второй - константа, которая указывает способ форматирования числа ffGeneral, ffExponent, ffFixed, ffNumber, ffCurrency
третий и четвёртый указывают сколько чисел отвести под дробную часть и под число в целом.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 января 2007, 22:42
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Николай Рубан

1) Как можно определить количество заполненных строк компонента StringGrid1?

Вот процедура:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,kol,rez:integer;
b:boolean;
begin
kol:=0;//количество НЕ заполненных строк
with StringGrid1 do
for i:=0 to RowCount-1 do
begin
b:=true;
for j:=0 to RowCount-1 do
if Cells[j,i]<>'' then
begin b:=false; break; end;
if b then inc(kol);
end;
rez:=StringGrid1.ColCount-1-kol;//количество заполненных строк
end;

2) И ещё назовите, пожалуйста, стандартную функцию с ее параметрами для преобразования вещественного числа в строку с указанием формата записи числа.

Рекомендую Вам пользоваться функцией Format().
function Format(const Format: string; const Args: array of const) : string;

Первым параметром функции выступает форматирующая строка. Это обычная текстовая строка, но в ней на нужных местах стоят специальные символы, которые определяют, какие и как туда будут подставлены параметры.

Второй параметр функции Format называется списком аргументов. Он и содержит "вставляемые" в форматирующую строку параметры. Обратите внимание, что этот открытый массив имеет тип array of const, и в нем может передаваться переменное число разнотипных параметров.

Более подробно о параметрах и возможностях функции можно прочитать по ссылкеhttp://psf.grsu.by/UchProc/konspekt/delphi/ch05/ch03.

Удачи!!!

Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 21 января 2007, 22:49
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 19:26: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 24 февраля 2020, 11:52
Выполнено за 0.03 сек.
Рейтинг@Mail.ru