Главная страница
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.016 c
1-72395
@andrew
2003-01-13 15:40
2003.01.23
Привет всем. есть MDI-Child, много MDI-Child :-)


1-72183
Dead Stark
2003-01-14 03:20
2003.01.23
как нарисовать свой скроллбар для ttreeview


14-72458
Pat
2003-01-04 23:34
2003.01.23
Странные вещи...


1-72213
PONTIY
2003-01-14 08:32
2003.01.23
Как различить исключения и правильно их обработать?


3-72037
Rule
2003-01-05 01:07
2003.01.23
Помогите с синхронизацией данных