Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

слияние двух переменных типа string [D6, Win95/98, Win2k]


Dub ©   (2004-07-21 07:13:00) 

вопрос следующий:
Есть две переменных типа String. При этом заранее известны их длины: Например 4 символа и 10 символов соответственно.
________Можно ли их слить так, чтобы вторая переменная слилась (или всавилась в первую переменную) начиная со строго фиксированного места, например с 17.
Пример: slovo:='мармелад'; stroka:=' апельсин';
Обычно: slovo+stroka, то получится мармелад апельсин.
Но необходимо получить:  slovo+stroka   мармелад             апельсин


FOX   (2004-07-21 11:12:00) [1]

А что, старый добрый format уже не в моде :-)

format( '%-17.17s%s', [slovo, stroka])


SergP   (2004-07-21 09:43:00) [2]


> Dub   (21.07.04 07:43) [3]
> пробелы вставит можно. А если изменить исходные данные:
> длины переменных варьируются в каких-то пределах: 1-я: 7
> символов (её длина может быть не более 7 символов), а 2-я:
> 10.НЕо вторая строка должна всё же влиться в первую начиная
> с 17 символа. Это можно ?


Дык посчитай количество пробелов которое нужно добавить в середину, типа как 17-length(slovo) а потом берешь slovo, добавляешь необходимое кол-во пробелов, затем добавляешь stroka

:


Anatoly Podgoretsky   (2004-07-21 08:59:00) [3]

Dub   (21.07.04 07:43) [3]
Нельзя!
1-я: 7 символов ( её длина может быть не более 7 символов), поэтому невозможно вставить начиная с 17 символа.


Dub   (2004-07-21 08:06:00) [4]

Большое Всем спасибо: Вы поняли меня ПРЕКРАСНО - ещё раз СПАСИБО!!!


Думкин   (2004-07-21 08:02:00) [5]

> [3] Dub   (21.07.04 07:43)

Сам то пониамешь что пишешь, или как? Как влиться?
Я так мыслю:
1. Есть 2 строки.
2. Надо получить их объединение и записать результат в 1-ю, но при этом в новой строке положение второй должно быть фиксированным некоторым n.

i := length(s1);
if length(s1)<n then begin
SetLength(s1,n);
FillChar(s1[i+1],n-i,#32)
end;
Insert(s2,s1,n)


R   (2004-07-21 07:44:00) [6]

Для образца
procedure TForm1.Button1Click(Sender: TObject);
var
S,S1,S2:String;
I,J:SmallInt;
begin
S:=Edit1.text;
S1:=Edit2.text;
I:= SpinEdit1.Value-Length(S); //позиция(17)
If I>0 Then
for J:=1 To I Do
S2:=S2+' ';
Edit3.Text:=S+S2+S1;
end;


Dub   (2004-07-21 07:43:00) [7]

пробелы вставит можно. А если изменить исходные данные: длины переменных варьируются в каких-то пределах: 1-я: 7 символов (её длина может быть не более 7 символов), а 2-я: 10.НЕо вторая строка должна всё же влиться в первую начиная с 17 символа. Это можно ?


R   (2004-07-21 07:24:00) [8]

Ну и добавь пробелллов между ними


Думкин   (2004-07-21 07:23:00) [9]

Вопрос уточни?
Если строка 4 символа, то как в нее можно вставить начиная с 17-го?
Или она уже не 4 символа?


Наверх

Титульная страница Поиск, карта сайта Написать письмо