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

Вниз

номер позиции   Найти похожие ветки 

 
Fors   (2003-01-13 18:57) [0]

Я хочу написать аналог процедуры Insert. Процедурой Delete и функцией Copy пользоваться нельзя. В первой строке входа дана подстрока, которая вставляется, во второй строке входа строка, куда вставляется и в третьей строке входа позиция, начиная с которой подстрока будет входить в строку.Когда я ввожу номер позиции 4 в этом слове hel чтобы получить слово hello
lo - то что хочу вставить
hel - куда вставляю
hel l- то что получаеться
Надо добавить проверку if (Position < Length(Str))Как это сделать какой обработчик ошибки я затрудняюсь.


var
i: Integer;
begin
SetLength(Result, Length(Srt) + Length(SubStr));
for i := 1 to Position do
Result[i] := Str[i];
for i := 1 to Length(SubStr) do
Result[i + Position] := SubStr[i];
for i := Position to Length(Str) do
Result[i + Length(SubStr)] := Str[i];
end;


 
Palladin ©   (2003-01-13 19:22) [1]


function _Insert(Str,SubStr:string;pos:word):string;
var
i:integer;
s1:string;
begin
if Pos>Length(Str) then
begin
result:=Str;
for i:=length(str) to pos-1 do result:=result+" ";
result:=result+SubStr;
end else
begin
s1:=Str;
SetLength(s1,pos-1);
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
end;
end;


попробуй. не тестировал.


 
Fors   (2003-01-13 19:41) [2]

Ввожу, все нормально, но при нажатие на Enter вывод не показывает,
WriteLn и ReadLn поставил
var pos:word;
i:integer;
Str,result,SubStr,s1:string;
begin
ReadLn(SubStr);
ReadLn(Str);
ReadLn(pos);
begin
if Pos>Length(Str) then
begin
result:=Str;
for i:=length(str) to pos-1 do result:=result+" ";
result:=result+SubStr;
end else
begin
s1:=Str;
SetLength(s1,pos-1);
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
WriteLn(result);
ReadLn
end;
end;
end.


 
Palladin ©   (2003-01-13 19:47) [3]

ужасть просто :)

это не правильно

...
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
WriteLn(result);
ReadLn
end;
end;
end.


вот так правильно

...
result:=s1+SubStr;
for i:=pos to length(Str) do result:=result+str[i];
end;
WriteLn(result);
ReadLn;
end;
end.


 
Palladin ©   (2003-01-13 19:49) [4]

какой я сегодня добрый :)
от безделья наверно...



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
4-72581
Slavik99
2002-12-06 20:53
2003.01.23
Уважаемые профи, помогите исправить ошибку....


1-72210
ArhangeJI
2003-01-14 12:42
2003.01.23
ComboBox как избавиться от двух символов в конце текста...


1-72377
Andy BitOff
2003-01-08 20:25
2003.01.23
Мастера, СРОЧНО!!!


1-72320
Dor
2003-01-15 18:51
2003.01.23
У меня есть edit1 и edit2,и мне надо,чтою из тексты из edit1 и ed


4-72592
igornov
2002-12-04 18:08
2003.01.23
Как передать окну фокус зная его хенл?