Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c