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

Вниз

TDataFile   Найти похожие ветки 

 
Shadow77 ©   (2002-04-04 02:12) [0]

При использовании TDataFile возникает Range check error вот при таком преобразовании.

procedure TDataFile.XorBuffer(pBuf: Pointer; Count: Integer);
var
I: Integer;
P: pByte;
begin
p := pBuf;
if( FCodeKey <> "" )then
for I := 0 to Count - 1 do
begin
Ошибка>>p^ := Byte(FCodeKey[1 + ((I - 1) mod Length(FCodeKey))]) xor p^;
inc(p);
end;
end;

Чего-то я не могу разобраться почему...
Текст проги например самый простой:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DataFile, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var ini:tdatafile;
begin
ini:=tDataFile.Create("C:\data.dat");
ini.WriteString("Test","Date",DateToStr(date));
ini.Free;
end;

end.

В чем может быть дело?


 
Anatoly Podgoretsky ©   (2002-04-04 09:48) [1]

А у тебя FCodeKey случайно не AnsiString, если да то будет обращение к нулевому элементу, а такого нет
Ошибка>>p^ := Byte(FCodeKey[1 + ((I - 1) mod Length(FCodeKey))])

Зачем то привел кусок кода не имеющий отношения к делу, но не привел описание нужных типов и обращение к XorBuffer


 
deleon ©   (2002-04-04 10:00) [2]

Как автор данного компонента сообщаю, что в данном случае необходимо отключить настройку компилятора Range Checking,
процедура работает правильно, но что-то компилятор ее не любит,
а вообще эту процедуру как-нибудь перепишу :)))


 
Shadow77 ©   (2002-04-04 16:19) [3]

В опциях проэкта флажок Range checking не стоит... А ошибка есть... Или может я не там смотрю? Где отключить?


 
deleon ©   (2002-04-04 16:29) [4]

попробуй перед реализацией процедуры XorBuffer поставить директиву:
{$RANGECHECKS OFF}


 
Shadow77 ©   (2002-04-04 17:57) [5]

Заработало. Вот только странно, что раньше она и без отключения проверки спокойно работала, и вдруг перестала...



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
14-46481
Алексей Петров
2002-03-05 16:35
2002.04.15
Головоломка на знание принципа работы компилятора Object Pascal


14-46480
VictorT
2002-03-06 13:12
2002.04.15
однопользовательская в многопользовательскую


14-46489
Shaman_Naydak
2002-03-06 13:09
2002.04.15
Еще про объекты


4-46536
Yonic
2002-02-12 04:40
2002.04.15
Как скопировать текст из листбокса?


1-46322
Deus
2002-04-03 10:28
2002.04.15
Отловить fullscreen?