Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

Unsafe code, как с этим бороться?   Найти похожие ветки 

 
boalse ©   (2006-08-15 06:42) [0]

Пытаюсь скомпиллировать не мой модуль, вылазят следующие ошибки:

Build
 [Warning] DGLUT.pas(344): Unsafe code "@ operator"
 [Warning] DGLUT.pas(344): Unsafe code "@ operator"
 [Warning] DGLUT.pas(344): Unsafe code "@ operator"
 [Warning] DGLUT.pas(344): Unsafe code "@ operator"
 [Warning] DGLUT.pas(344): Unsafe code "@ operator"
 [Fatal Error] DGLUT.pas(350): Line too long (more than 1023 characters)

Как я понимаю, непосредственно с кодом эти ошибки не связаны, поэтому код не привожу.


 
PZ   (2006-08-15 08:29) [1]

Это значит, что в Kilix эти операторы отсутствуют. Если модуль используется только в Delphi - можно не обращать внимания.


 
PZ   (2006-08-15 08:30) [2]

Я имел в виду Unsafe code


 
sniknik ©   (2006-08-15 08:42) [3]

в опциях проекта в "compiler messages" отключи три последних "варнинга".  

а ошибка
> Fatal Error] DGLUT.pas(350): Line too long (more than 1023 characters)
это у тебя в редакторе дейфей строку разбить надо на короткие (< 256), компилятор длинные не берет. (видать форматирование кода сбилось)


 
boalse ©   (2006-08-15 08:48) [4]

sniknik ©   (15.08.06 08:42) [3]
В том-то и дело, что визуально строки длинной меньше 256.
Однако, открыв файл в блокноте, обнаружил, что  в качестве разделителей строк стоят нули, хотя обычно было 13. Неужто в этом дело? Попробую заменить эти нули.


 
Anatoly Podgoretsky ©   (2006-08-15 08:53) [5]

Никаких нулей и #13 быть не должно, это же виндоус, а не макинтош.
А код и правда очень опасный.


 
evvcom ©   (2006-08-15 09:24) [6]

> Однако, открыв файл в блокноте, обнаружил, что  в качестве
> разделителей строк стоят нули, хотя обычно было 13

Как это ты в блокноте увидел нули и 13? Поясни.


 
StriderMan ©   (2006-08-15 09:27) [7]


> А код и правда очень опасный

а что такого опасного?


 
Ketmar ©   (2006-08-15 09:39) [8]

> [4] boalse ©   (15.08.06 08:48)
не нули. а #10. открыть в том де FAR"е, записать при помощи Shift+F2, сменив разделители на CR/LF. будет сатисфакшн.


 
boalse ©   (2006-08-15 10:26) [9]

Всё, нашел косяк. Написал следующий код, поиздевался над файлом разными его вариациями, и всё заработало. Не понял, правда, что конкредно было причиной :)

procedure TForm1.Button1Click(Sender: TObject);
var
 SFile: HFILE;
 SHandle: THandle;
 Atr:TOFStruct;
 FileView: Pointer;
 PData: PByteArray;
 FS,I: cardinal;
 AA: TByHandleFileInformation;
 ff: Boolean;
begin
 if OpenDialog1.Execute then
   begin
     SFile := OpenFile(PChar(OpenDialog1.FileName), Atr, OF_READWRITE );
     if (SFile<>0)  then
       begin
             if GetFileInformationByHandle(SFile,AA) then             begin
             FS:=AA.nFileSizeLow;
             SHandle:=CreateFileMapping(SFile, nil, PAGE_READWRITE, 0,FS, "");
             if SFile<>0 then
               begin
                 FileView := MapViewOfFile(SHandle, FILE_MAP_ALL_ACCESS, 0, 0,FS);
                 if FileView <>nil then
                   begin
                     PData:=PByteArray(FileView);
                     ff:=false;
                     For I:=0 to FS-1 do
                       begin
                         if ff then
                           begin
                             if (PData[I]=$D)  then
                               PData[I]:=$A else
                               PData[I-1]:=ord(" ");
                           end;
                             
                         ff:= PData[I]=$D;
                       end;
                     Memo1.Lines.BeginUpdate;
                     try
                       Memo1.Clear;
                       For I:=0 to FS-1 do
                         Memo1.Text:=Memo1.Text+Chr(PData[I]);
                     finally
                       Memo1.Lines.EndUpdate;
                     end;

                     UnmapViewOfFile(FileView);
                   end;
                 CloseHandle(SHandle);
               end;
           end;
       end;
     FileClose(SFile);
   end;
end;



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
2-1156272009
anton773
2006-08-22 22:40
2006.09.10
Shellexecute


15-1155540237
WondeRu
2006-08-14 11:23
2006.09.10
Универсальный драйвер для USB-Flash под Win98


3-1152098680
antoxa2005
2006-07-05 15:24
2006.09.10
Подскажите, а как организовать блокировку записи MS SQL Server


2-1156163382
DiamondShark
2006-08-21 16:29
2006.09.10
Как закрыть popup-меню?


15-1155814241
lorn
2006-08-17 15:30
2006.09.10
cryatal report-delphi-w2k