Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Форматирование строчки адреса на конверт   Найти похожие ветки 

 
fastcall   (2006-06-20 14:49) [0]

Есть адрес в формате

443090 г. Самара, ул. Советской Армии, 180/3, оф. 404

И есть карточка определённых размеров типа "Кому, Куда" (для конверта)

Так вот, нужно сделать процедуру, которая выдавала бы эти строчки в
таком формате:

Кому: Начальнику отдела снабжения
Куда: г. Самара, ул. Советской Армии,
180/3, оф. 404

443090

Думаю, задача ясна. Пытался разбивать на подстроки по 30 символов, но выглядит некрасиво.

Адреса написаны в произвольном формате (строка), и это отяжеляет решение...

--- HELP ---


 
Сергей М. ©   (2006-06-20 14:52) [1]


> Адреса написаны в произвольном формате (строка), и это отяжеляет
> решение


Бросай этот  геморрой


 
fastcall   (2006-06-20 14:56) [2]

Удалено модератором


 
Сергей М. ©   (2006-06-20 15:00) [3]

Удалено модератором


 
fastcall   (2006-06-20 15:02) [4]

Удалено модератором


 
Сергей М. ©   (2006-06-20 15:02) [5]


> Пытался разбивать на подстроки по 30 символов, но выглядит
> некрасиво.


Это значит что утверждение

> строчки в
> таком формате


неверно.


 
fastcall   (2006-06-20 15:03) [6]

30 символов это максимум.


 
Сергей М. ©   (2006-06-20 15:06) [7]


> 30 символов это максимум.
>


Кем писано сие соглашение ? Тобой ?


 
fastcall   (2006-06-20 15:07) [8]

У МЕНЯ БОЛЬШЕ НА КОНВЕРТ НЕ ВЛЕЗАЕТ
короче ладно, всё с тобой ясно, совсем вы тут зарвались...


 
Сергей М. ©   (2006-06-20 15:08) [9]

Удалено модератором


 
Сергей М. ©   (2006-06-20 15:09) [10]

Удалено модератором


 
Игорь Шевченко ©   (2006-06-20 15:26) [11]

Твори выдумывай пробуй

procedure WrapText (const Source: string; Limit: Integer; Dest: TStrings);
var
 Tmp: TStrings;
 Work: string;
 I: Integer;
begin
 Tmp := TStringList.Create;
 try
   StrBreakApart (StringReplace(Source, "   ", " ", [rfReplaceAll]), " ", Tmp);
   Dest.Clear;
   for I:=0 to Pred(Tmp.Count) do begin
     if Length(Tmp[I]) > Limit then begin
       if Length(Work) > 0 then begin
         Dest.Add (Work);
         Work := "";
       end;
       Work := Tmp[I];
     end else if (Length(Work) = 0) or
       (Succ(Length(Work)) + Length(Tmp[I]) <= Limit) then begin
       if Length(Work) > 0 then
         Work := Work + " ";
       Work := Work + Tmp[I];
     end else begin
       Dest.Add (Work);
       Work := "";
       Work := Tmp[I];
     end;
   end;
   if Length(Work) <> 0 then
     Dest.Add(Work);
 finally
   Tmp.Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 WrappedText: TStrings;
begin
 WrappedText := TStringList.Create;
 try
   WrapText (Edit1.Text, StrToIntDef(Edit2.Text, 30), WrappedText);
   Memo1.Lines.Assign(WrappedText);
 finally
   WrappedText.Free;
 end;
end;



> Классно вы тут новичкам помогаете


Тебе тут никто не обязан помогать. Вся помощь - дело доброй воли.


 
Сергей М. ©   (2006-06-20 15:39) [12]


> Игорь Шевченко


Ежели человек думать не хочет (или нечем думать) - оно (все это ему рекомендованое), ч.н., "мертвому припарка".


 
Игорь Шевченко ©   (2006-06-20 15:49) [13]

Сергей М. ©   (20.06.06 15:39) [12]

Посмотрим. Но наезжать оно в любом случае ни к чему. По крайней мере, больше одного раза :)


 
Сергей М. ©   (2006-06-20 15:58) [14]


> больше одного раза


Оно тебе, Игорь, и регулировать дано.



Страницы: 1 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
6-1142584643
MrShadow
2006-03-17 11:37
2006.07.30
Помогите разобраться!


2-1152255609
UMU
2006-07-07 11:00
2006.07.30
Вставить значение из Edit в AdoQuery


2-1152650237
XeON
2006-07-12 00:37
2006.07.30
Удаление записи из массива


15-1151651382
fedotawa
2006-06-30 11:09
2006.07.30
Ветка про продажу книг за 23 рубля


4-1144920685
oleg_
2006-04-13 13:31
2006.07.30
Выбор директории с указанием текущей