Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: 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 вся ветка

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

Наверх




Память: 0.45 MB
Время: 0.062 c
15-1271766543
Kolan
2010-04-20 16:29
2010.08.27
Подскажите зарубежные интернет-журналы вроде Хабры?


3-1239559848
Александр Степанов
2009-04-12 22:10
2010.08.27
Проблема с подключением к базе FireBird


2-1267379618
Pavel
2010-02-28 20:53
2010.08.27
Загрузка данных из файла в поток


2-1271956369
Сергей
2010-04-22 21:12
2010.08.27
Нужна помошь (незнаю как описать)


15-1264541405
Юрий
2010-01-27 00:30
2010.08.27
С днем рождения ! 27 января 2010 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский