Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
1-72232
W0land
2003-01-14 14:31
2003.01.23
WinXP+Delphi5 - проблема с отладчиком


14-72535
Igor_thief
2003-01-07 17:14
2003.01.23
Servers


3-72134
Sergant
2003-01-01 10:13
2003.01.23
Фильтрация в Grid е


14-72466
Fantasist.
2003-01-05 07:00
2003.01.23
Хочу программировать на VCL без Delphi


1-72268
Ihtiandr
2003-01-14 16:12
2003.01.23
Transaction




   Наверх