Загрузка данных


{$platform x64}
program Lab4_Dups_Static;

const
    STRMAX = 255;

{ Статическая привязка к функции из dups.dll.
  bool из C++ занимает 1 байт, поэтому возвращаем byte (0 / не 0). }
function MakeNewStrFromRepeated(oldStr: string; newStr: System.Text.StringBuilder): byte;
    external 'dups.dll' name 'MakeNewStrFromRepeated';

var
    { Входные данные }
    { readedStr - строка, считанная из файла }
    readedStr: string;

    { Промежуточные данные }
    { f - переменная для работы с входным файлом }
    f: TextFile;
    { buf - буфер под результат (аналог char newStr[STRMAX]) }
    buf: System.Text.StringBuilder;
    { res - результат вызова функции из dll }
    res: byte;

    { Выходные данные }
    { newStr - результирующая строка }
    newStr: string;

begin
    if (ParamCount() < 1) then
        WriteLn('Недостаточно входных данных!')
    else if (not FileExists(ParamStr(1))) then
        WriteLn('Файла ', ParamStr(1), ' не существует!')
    else
    begin
        { Ввод исходных данных }
        AssignFile(f, ParamStr(1));
        Reset(f);
        if (Eof(f)) then
        begin
            WriteLn('Ошибка считывания строки из файла!');
            CloseFile(f);
        end
        else
        begin
            ReadLn(f, readedStr);
            CloseFile(f);

            WriteLn('Считанная строка из файла:');
            WriteLn(readedStr);

            buf := new System.Text.StringBuilder(STRMAX);

            { Вызов функции из dups.dll }
            res := MakeNewStrFromRepeated(readedStr, buf);

            if (res <> 0) then
            begin
                newStr := buf.ToString();
                if (newStr = '') then
                    WriteLn('Новая строка ПУСТА! В исходной строке НЕ БЫЛО слов с повторяющимися буквами!')
                else
                begin
                    WriteLn('Новая строка из слов, содержащих повторяющиеся буквы:');
                    WriteLn(newStr);
                end;
            end
            else
                WriteLn('В считанной строке НЕТ слов с повторяющимися БУКВАМИ!');
        end;
    end;
end.