Текущий архив: 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