Compilation 如何使用免费的Pascal进行编译

Compilation 如何使用免费的Pascal进行编译,compilation,compiler-errors,freepascal,Compilation,Compiler Errors,Freepascal,伙计们,我从一个朋友那里得到了一个消息,这个消息应该可以帮助我学到很多东西,但我犯了错误 错误:找不到标识符“TResourceStream” “布尔” “TMemoryStream” “TResourceInfo” “试试看” 及 致命:语法错误,应为“;”,但找到“标识符MS” 请帮助我编译这个。 对不起,我对编程一无所知 这是来源 函数EnumResourceNames(hModule:hModule;//从LoadLibrary/Ex返回的EXE句柄 lpType:PChar;//资源类

伙计们,我从一个朋友那里得到了一个消息,这个消息应该可以帮助我学到很多东西,但我犯了错误

错误:找不到标识符“TResourceStream” “布尔” “TMemoryStream” “TResourceInfo” “试试看”

致命:语法错误,应为“;”,但找到“标识符MS”

请帮助我编译这个。 对不起,我对编程一无所知

这是来源

函数EnumResourceNames(hModule:hModule;//从LoadLibrary/Ex返回的EXE句柄 lpType:PChar;//资源类型(例如:RT\u RCDATA) lpEnumFunc:ENUMRESNAMEPROC;//回调函数地址 lParam:Integer//long Integer(例如:指向对象的指针) ):BOOL;stdcall

function CB_EnumDfmNameProc(hModule: THandle; lpszType, lpszName: PChar;
  lParam: Integer): Boolean; stdcall;
var
  ms: TMemoryStream;
  rs: TResourceStream;
  Buffer: array of Byte;
begin
  with TResourceInfo(lParam) do
  begin
    rs := TResourceStream.Create(TResourceInfo(lParam).Module,
    lpszname, lpszType); // load resource in memory
    try
      ms := TMemoryStream.Create;
      try
        try
          SetLength(Buffer, 4);
          rs.Read(Buffer[0],          SizeOf(Buffer)); // read the first 4 bytes
          if string(Buffer) = 'TPF0' then // is it a DFM resource?
          begin
            rs.Seek(0, 0);
            ObjectBinaryToText(rs, ms); // decode DFM
            ms.Seek(0, 0);
            AddDfm(StrPas(lpszName), ms); // add it to our own list
          end;
        except
          raise;
        end;
      finally
        ms.Free;
      end;
    finally
      rs.free;
    end;
  end;
  Result := True;
end;

procedure TResourceInfo.EnumDfmNames;
begin
  if FModule > 0 then // if an EXE file has been loaded
    EnumResourceNames(FModule, RT_RCDATA, // go and search RCDATA resources
      @CB_EnumDfmNameProc, Integer(Self));
end; 

若要格式化代码,请将其复制到文本编辑器中,选择“全部”,然后在TAB size设置为2时键入TAB键两次,或在TAB size设置为4时键入TAB键一次。然后从编辑器中复制并粘贴到S.OStill出现错误