Я пытаюсь написать комментарий стриппера в паскале. Я запускаю свой код и передаю ему исходный код кода C, и он удаляет комментарии из файла и выводит результат на терминал.Pascal - Написание странных символов
Я довольно новичок в паскале. Я получаю очень странный результат, и я не могу понять, почему. Код проверяет комментарии по строкам и печатает символы по одному. Считыватель комментариев печатает то, что кажется случайным символом, когда оно достигает начала новой строки. Я использую функцию Pascals Write (Str [i]) для печати символов и WriteLn() после достижения конца строки.
Я понятия не имею, зачем им получать странный выход. Я запускаю Linux Mint и могу скомпилировать и запустить свой код, но я получаю этот странный вывод. Я также попытался запустить свой код на Mac и получил ошибку во время выполнения:
Program Path: ./Assignment1
File Name: lol.c
Runtime error 2 at $00011532
$00011532
$0002F7F6
$000113FD
$00011328
$00000002
Вот мой код
program Assignment1;
uses
Sysutils;
var UserFile : TextFile;
TString : String;
OLine : String;
i : integer;
isComment : boolean;
skip : boolean;
begin
{$I+}
WriteLn('Program Path: ', ParamStr(0));
WriteLn('File Name: ', ParamStr(1));
Assign(UserFile, ParamStr(1) + '.c');
Reset(UserFile);
isComment := false;
skip := true;
Repeat
Readln(UserFile, TString);
for i:= 0 to ((Length(TString) - 1)) do
begin
if(skip) then
begin
skip := false;
continue;
end;
if(isComment = false) Then
begin
if(TString[i] = '/') Then
begin
if(TString[i+1] = '/') Then
begin
break;
end
else if(TString[i+1] = '*') Then
begin
isComment := true;
skip := true;
continue;
end;
end;
Write(TString[i]);
if(i = Length(TString) - 1) Then
begin
Write(TString[i + 1]);
end;
end
else
begin
if(TString[i] = '*') Then
begin
if(TString[i + 1] = '/') Then
begin
isComment := false;
skip := true;
continue;
end;
end;
end;
end;
WriteLn();
Until Eof(UserFile);
end.
Я получаю случайных символов, которые варьируются от стандартных символов клавиатуры для Юникода блоков, таких как найденные here.
Есть ли у кого-нибудь предложения?
В Паскале строки обычно основаны на 1. –
'' if (TString [i + 1] '': может привести к ошибке диапазона. Вы должны скорее скопировать идентификатор и проверить его значение. –