| 
| 
 | Вопрос # 278/ вопрос решён / | 
 |  Здравствуйте.Как можно определить количество заполненных строк компонента 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |