Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.12.2011, 13:03
win32nod32 win32nod32 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 12
Репутация: 10
По умолчанию Форматирование текста

Всем привет. Имеются некоторые строки det, count, firm. Значения в стоках разное. Необходимо отформатировать их в тексте типа такого:

det1 count1 firm1
det2 count2 firm2
det3 count3 firm3
det4 count4 firm4

в memo. Всегда получается, что например det1 по длине меньше det3 или
firm1 больше, допустим, firm4. Нужно сделать чтобы все это дело было ровненько в столбиках:

Карбюратор......4.....ОАО "АвтоВАЗ"
Трамблер.........3.....ОАО "...."
Стартер..........12.....ОАО "...."

вот, чтобы так. Как это можно сделать, что то не понимаю. Надеюсь на помощь)
Ответить с цитированием
  #2  
Старый 26.12.2011, 13:22
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Заполнение строки определенным символом до нужной длины
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 26.12.2011, 13:24
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

ещё есть функция Format
PHP код:
Memo1.Font.Name := 'Courier New';
Memo1.Lines.Add(Format('%-10s = %10s', ['123''456']));
Memo1.Lines.Add(Format('%-10s = %10s', ['123456''78910'])); 
Ответить с цитированием
  #4  
Старый 26.12.2011, 14:00
win32nod32 win32nod32 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

Нет, точки я специально поставил, т.к. после редактирования сообщения будет не то, что нужно. Вместо точек пробелы должны быть.
Pyro, пробовал, все равно, кол-во символов разное, то выходит криво.

Последний раз редактировалось win32nod32, 26.12.2011 в 14:06.
Ответить с цитированием
  #5  
Старый 26.12.2011, 14:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от win32nod32
Вместо точек пробелы должны быть.
Код:
 function RightPad(S: string; Ch: Char; Len: Integer): string;
 var
   RestLen: Integer;
 begin
   Result  := S;
   RestLen := Len - Length(s);
   if RestLen < 1 then Exit;
   Result := StringOfChar(Ch, RestLen) + S;
 end;
RightPad('Edit2.Text', ' ', 30);
шрифт Courier установи.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 26.12.2011, 14:20
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
Сообщение от win32nod32
кол-во символов разное, то выходит криво.
правда что ли?
PHP код:
Memo1
123        
=        456
123456     
=      78910 
Ответить с цитированием
  #7  
Старый 26.12.2011, 14:25
win32nod32 win32nod32 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

NumLock, что то я не понимаю, зачем нужно заполнять строку пробелами.
Значение len в этой процедуре нада же взять откуда то. Вот скрин, там показаны 3 слова(строки), которые соединяются в одну и добавляются в мемо. Нужно выровнять эти столбики (буквы цифры буквы), чтобы ровно было, как в примере с деталями.

Pyro, а как тогда сделать? вот есть 3 константы с типом string[50].

result.add(format('%s %s %s', [det, count, firm]));

result - stringlist.
Изображения
Тип файла: jpg 1.jpg (42.1 Кбайт, 11 просмотров)

Последний раз редактировалось win32nod32, 26.12.2011 в 14:29.
Ответить с цитированием
  #8  
Старый 26.12.2011, 14:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от win32nod32
что то я не понимаю, зачем нужно заполнять строку пробелами.
чтобы все строки были одной длины!



Код:
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);

function LeftPad(s: String; len: Integer): String;
begin
  Result:=s;
  len:=len-Length(s);
  if len<1 then Exit;
  Result:=s+StringOfChar(' ', len);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  det, count, firm: String[20];
begin
  det:='Карбюратор';
  count:='4';
  firm:='ОАО "АвтоВАЗ"';
  Memo1.Lines.Add(LeftPad(det, 24)+LeftPad(count, 24)+LeftPad(firm, 24));
  Memo1.Lines.Add(LeftPad('Трамблер', 24)+LeftPad('3', 24)+LeftPad('ОАО "Жигули"', 24));
  det:='Стартер,';
  count:='12,';
  firm:='"Ferrari"';
  Memo1.Lines.Add(LeftPad(det, 24)+LeftPad(count, 24)+LeftPad(firm, 24));
end;

http://zalil.ru/32376022
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 26.12.2011 в 14:58.
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
win32nod32 (26.12.2011)
  #9  
Старый 26.12.2011, 15:13
win32nod32 win32nod32 вне форума
Прохожий
 
Регистрация: 27.02.2011
Сообщения: 12
Репутация: 10
По умолчанию

NumLock, большое спасибо =)
Ответить с цитированием
  #10  
Старый 26.12.2011, 16:49
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

а можно проще.
Используй моноширинный шрифт
Например Courier New
Все символы имеют одинаковую ширину как на пишущей маш
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:02.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025