Лабораторная 3. Управление строками

  1. Разработать процедуру для "шахматной" вставки одной строки типа ShortString в другую строку типа ShortString. Запрещается внутри процедуры использовать функции обработки строк, все манипуляции со строками проводить как с наборами (массивами) символов.
    procedure ChessInsertSS(const firstStr:shortString; var secondStr:shortString);
    firstStr: вставляемая строка
    secondStr: целевая строка
    
    Пример:
    ПрограммаРезультат работы
    var s1:shortString='12345';
        s2:shortString;
    begin
     s2:='testing';
     writeln(s1);
     writeln(s2);
     ChessInsertSS(s1,s2);
     writeln(s2);
    end.
    
    12345
    testing
    t1e2s3t4i5ng
    

  2. * Разработать процедуру для "шахматной" вставки одной строки типа PChar в другую строку типа PChar. Запрещается внутри процедуры использовать функции обработки строк, все манипуляции со строками проводить как с наборами (массивами) символов.
    procedure ChessInsertPC(const firstStr:PChar; var secondStr:PChar);
    firstStr: вставляемая строка
    secondStr: целевая строка
    Считать, что для целевой строки уже выделено достаточно оперативной памяти (см. пример)
    
    Пример:
    ПрограммаРезультат работы
    uses strings;
    var s1:pchar='12345';
        s2:pchar;
        data:array[0..100] of char;
    begin
     s2:=strcopy(@data,'testing');
     // теперь s2 ссылается на массив data достаточного объема
     writeln(s1);
     writeln(s2);
     ChessInsertPC(s1,s2);
     writeln(s2);
    end.
    
    12345
    testing
    t1e2s3t4i5ng
    

  3. * Разработать процедуру для "шахматной" вставки одной строки типа AnsiString в другую строку типа AnsiString. Запрещается внутри процедуры использовать функции обработки строк, все манипуляции со строками проводить как с наборами (массивами) символов.
    procedure ChessInsertAS(const firstStr:AnsiString; var secondStr:AnsiString);
    firstStr: вставляемая строка
    secondStr: целевая строка
    Для обеспечения достаточного объема оперативной памяти в ShortString рекомендуется до вызова функции
    провести операцию увеличения размера строки, а затем - уменьшения до исходного объема (см. пример)
    
    Пример:
    ПрограммаРезультат работы
    var s1:AnsiString='12345';
        s2:AnsiString;
        cnt:word;
    begin
     s2:='testing';
     cnt:=length(s2);
     SetLength(s2,100); SetLength(s2,cnt);
     // выделили дополнительную память для s2
     writeln(s1);
     writeln(s2);
     ChessInsertAS(s1,s2);
     writeln(s2);
    end.
    
    12345
    testing
    t1e2s3t4i5ng