Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Выравнивание чисел при записи в текстовый файл

Delphi , Графика и Игры , Шрифты

При выравнивании чисел в текстовом файле важно учитывать, что не все шрифты поддерживают фиксированную ширину символов. Шрифты, такие как Arial, имеют переменную ширину символов, что делает выравнивание чисел по правому краю невозможным с помощью пробелов.

Для выравнивания чисел по правому краю в текстовом файле следует использовать шрифты с фиксированной шириной символов, например, Courier New или другие шрифты с аналогичными характеристиками (Liberations Mono, DejaVu Sans Mono, Noto Mono, Lucida Console).

Пример кода для записи чисел в текстовый файл с использованием шрифта Courier New и выравниванием по правому краю:

procedure BewaarStringGrid(StringGrid1: TStringGrid);
var
  varFile1: TextFile;
  varColLenArr: array of Integer;
  varLijn: string;
  varCol, varRow: Integer;
  tmpValue: Single;
begin
  // Определение максимальной ширины столбца
  SetLength(varColLenArr, StringGrid1.ColCount);
  for varRow := 0 to StringGrid1.RowCount - 1 do
    for varCol := 0 to StringGrid1.ColCount - 1 do
    begin
      varColLenArr[varCol] := MaxInt(Length(StringGrid1.Cells[varCol, varRow]), varColLenArr[varCol]);
    end;
  // Запись в текстовый файл
  varScoreBestandsnaam := 'WIEZEN' + '.txt';
  AssignFile(varFile1, varScoreBestandsnaam);
  Rewrite(varFile1);
  try
    // Заголовок файла
    Writeln(varFile1, 'Resultaat Wiezen - ' + formatdatetime('dd/mm/YYYY HH:MM', Now));
    // Запись заголовков
    varLijn := '';
    for varCol := 0 to StringGrid1.ColCount - 1 do
      varLijn := varLijn + StringGrid1.Cells[varCol, 0].PadRight(varColLenArr[varCol] + 1);
    Writeln(varFile1, varLijn);

    // Запись данных
    for varRow := 1 to StringGrid1.RowCount - 1 do
    begin
      varLijn := '';
      for varCol := 0 to StringGrid1.ColCount - 1 do
      begin
        if TryStrToFloat(StringGrid1.Cells[varCol, varRow], tmpValue) then
          varLijn := varLijn + Format('%' + IntToStr(varColLenArr[varCol]) + 's', [FormatFloat('0.####', tmpValue)]) + '  '
        else
          varLijn := varLijn + StringGrid1.Cells[varCol, varRow].PadRight(varColLenArr[varCol]);
      end;
      Writeln(varFile1, varLijn);
    end;
  finally
    CloseFile(varFile1);
end;

Использование шрифта Courier New и других подобных шрифтов позволит корректно выровнять числа по правому краю в текстовом файле, отображаемом в приложениях, поддерживающих эти шрифты.

Создано по материалам из источника по ссылке.

При выравнивании чисел в текстовом файле для корректного выравнивания по правому краю необходимо использовать шрифты с фиксированной шириной символов, такие как Courier New, и учитывать особенности их отображения в разных приложениях.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Шрифты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 14:42:18/0.011795043945312/0