Главная страница
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
3-72134
Sergant
2003-01-01 10:13
2003.01.23
Фильтрация в Grid е


3-72069
salvo
2003-01-06 13:55
2003.01.23
доступ к таблицам


1-72368
DDS
2003-01-13 09:22
2003.01.23
Убрать PROPERTY родителя у созданного компонента


6-72436
koandrew
2002-11-20 03:15
2003.01.23
Подсчёт сетевого и инетовского трафика


3-72125
niko45
2002-12-26 23:42
2003.01.23
Пересчёт