Вниз
Скачать: CL | DM;

Ошибка доступа к памяти (указатели)   Найти похожие ветки 

← →
Mer01   (2010-03-15 01:12) [0]


function RTEACrypt(ap: PIntArray; bp: PIntArray): LongInt;
begin
 a := ap[0];// Ошибка
//...
procedure DataCrypt(Input:Pointer; Ouput: Pointer; Len:LongInt);
begin
 while Len > 0 do  
 begin
   RTEACrypt(Input, Ouput);
   inc(PIntArray(Input), SizeOf(TIntArray));
   inc(PIntArray(Ouput), SizeOf(TIntArray));
   dec(Len, SizeOf(TIntArray));
 end;
end;

procedure DataDecrypt(Input:Pointer; Ouput: Pointer; Len:LongInt);
begin
 while Len > 0 do  
 begin
   RTEADecrypt(Input, Ouput);
   inc(PIntArray(Input), SizeOf(TIntArray));
   inc(PIntArray(Ouput), SizeOf(TIntArray));
   dec(Len, SizeOf(TIntArray));
 end;
end;

procedure StrToKey(Pass:String; var key: TKey);
begin
end;

procedure TMainForm.CryptBtnClick(Sender: TObject);
var
 s: String;
begin
 s := "Текст, Text";// ЕСЛИ ЗАДАТЬ ТАК ТО ОШИБКА
 //s := Memo.Lines.Text; ЕСЛИ ТАК ТО ОШИБКИ НЕТ!
 DataCrypt(@s, @s, Length(s));
 Memo.Lines.Add(s);
 DataDecrypt(@s, @s, Length(s));
 Memo.Lines.Add(s);
end;

Ошибка происходит после первой итерации.


← →
Германн ©   (2010-03-15 01:34) [1]


> s := "Текст, Text";// ЕСЛИ ЗАДАТЬ ТАК ТО ОШИБКА

Если задать так, s ссылается на область памяти в кодовом сегменте. Имхо.


← →
MBo ©   (2010-03-15 05:48) [2]

куда указывает @s ?


← →
Mer01   (2010-03-15 07:53) [3]

Тоесть как куда? На s: String;


← →
MBo ©   (2010-03-15 08:15) [4]

>Тоесть как куда? На s: String;
Стоит разобраться, на какое именно место строки указывает.


← →
Сергей М. ©   (2010-03-15 08:23) [5]


> Mer01   (15.03.10 07:53) [3]



> s := "Текст, Text";// ЕСЛИ ЗАДАТЬ ТАК ТО ОШИБКА


И это совершенно нормально.
Константы-литералы размещаются в секции данных, страницы которой имеют readonly-атрибут прав доступа.


> как куда? На s: String;


А надо не на s: String, а на буфер строковых данных, управляемый этой переменной:

DataCrypt(PChar(s), PChar(s), Length(s));

что эквивалентно

DataCrypt(@s[1], @s[1], Length(s));


← →
Mer01   (2010-03-15 14:43) [6]

Хм... PChar(s) - уже делал, вызывало туже ошибку, а вот @s[1] почему-то сработало O_o Спасибо)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.043 c
2-1268475934
Grab3
2010-03-13 13:25
2010.08.27
ComboBox Видимое в списке и его значение


2-1269429471
@!!ex
2010-03-24 14:17
2010.08.27
AV при выделении памяти


2-1269947335
Delphist2
2010-03-30 15:08
2010.08.27
EDatabaseError


2-1274110353
demon
2010-05-17 19:32
2010.08.27
Перекодировка из &#xxxx; в удобочитаемый


2-1267706023
А№
2010-03-04 15:33
2010.08.27
Приобразовать любой бинарный символ в код




   Наверх