Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка: already in skipping mode.


SAGE ©   (2003-12-19 15:52:00) 

При попытке конвертнуть KOL 1.87 в FPC с помощью FPC2KOL:

Error in line 41: -} - already in skipping mode.


Gandalf   (2003-12-19 17:20:00) [1]

И не только в Win32... Есть там такое дело - надо в указаной строке поменять минус {-} на плюс {+} - если не ошибаюсь. И еще там баг - Кладов случайно вырезал Win32 ParamStr. Потому надо довать (заменить) строки с ParamStr и ParamCount на:

{#IF not[DELPHI]}{-}
function ParamStr( Idx: Integer ): String;
var
 P, P1: PChar;
 Buffer: array[ 0..260 ] of Char;
begin
 if Idx = 0 then
   SetString( Result, Buffer, GetModuleFileName( 0, Buffer, Sizeof( Buffer ) ) )
 else
 begin
   P := GetCommandLine;
   repeat
     P := SkipSpaces( P );
     P1 := P;
     P := SkipParam(P);
     if Idx = 0 then Break;
     Dec(Idx);
   until (Idx < 0) or (P = P1);
   Result := Copy( P1, 1, P - P1 );
   if Length( Result ) >= 2 then
   if (Result[ 1 ] = '"') and (Result[ Length( Result ) ] = '"') then
     Result := Copy( Result, 2, Length( Result ) - 2 );
 end;
end;
{+}{#END}

{#IF [KYLIX]}{++}(*
function ParamStr( Idx: Integer ): String;
type
 PCharArray = array[0..0] of PChar;
begin
 if Index < ArgCount then
   Result := PCharArray(ArgValues^)[Index]
 else
   Result := '';
end;
*){--}{#END}

{#IF [LINUX]}{++}(*
function ParamStr( Idx: Integer ): String;
begin
 Result:=System.ParamStr(Idx);
end;
*){--}{#END}

{#IF [WIN32]}{++}(*
function ParamStr( Idx: Integer ): String;
begin
 Result:=System.ParamStr(Idx);
end;
*){--}{#END}

{#IF not[DELPHI]}{-}
function ParamCount: Integer;
var
 S: string;
begin
 Result := 0;
 while True do
 begin
   S := ParamStr(Result + 1);
   if S = '' then Break;
   Inc(Result);
 end;
end;
{+}{#END}

{#IF [KYLIX]}{++}(*
function ParamCount: Integer;
begin
 if ArgCount > 1 then
   Result := ArgCount - 1
 else Result := 0;
end;
*){--}{#END}

{#IF [LINUX]}{++}(*
function ParamCount: Integer;
begin
 Result:=System.ParamCount;
end;
*){--}{#END}

{#IF [WIN32]}{++}(*
function ParamCount: Integer;
begin
 Result:=System.ParamCount;
end;
*){--}{#END}


ЗЫ: И там вообще уже много новых корректив появилось, надеюсь на днях поделиться.


Vladimir Kladov   (2003-12-19 16:46:00) [2]

Ну и ничего страшного. Пока можно ручками на всех 4 или 5 строках заменить на {+}. Обновление будет совсем скоро, заодно и порпавлю компилируемость в PAS_VERSION.


Наверх

Титульная страница Поиск, карта сайта Написать письмо