Форум: "Начинающим";
Текущий архив: 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.079 c