Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.051 c
2-1275124913
tamako
2010-05-29 13:21
2010.08.27
dbf в txt как?


2-1270210954
JohnKorsh
2010-04-02 16:22
2010.08.27
Смена MAC адреса.


15-1265957349
@!!ex
2010-02-12 09:49
2010.08.27
Хоть что нибудь из OpenSource будет работать из коробки??


2-1272953338
Беликов А.А
2010-05-04 10:08
2010.08.27
Конвертация TBitmap в TGPBitmap


2-1272741834
Б
2010-05-01 23:23
2010.08.27
Инициализация массива.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский