Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 20:59   #1
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию StringList(Delphi)

Код:
var 
  sl:TStringList;
  buf,res:string;
  K:integer;
procedure TForm2.sButton2Click(Sender: TObject);
var
 key,longkey: string;
  i : integer;
  toto: char;
begin
key:='1234';
k:=2;
AssignFile(F,fName);
Reset(F);
Readln(F,buf);
//дешифровка
for i := 0 to (length(buf) div length(key)) do
    longkey := longkey + key;
for i := 1 to length(buf) do
begin
    toto := chr((ord(buf[i]) xor ord(longkey[i])));
    res := res + toto;
end;
//
sl:=TStringList.Create;
sl.Text:=res;
sl.free;
Form3.sLabel1.Caption := sl[k+1];
Form3.sRadioButton1.Caption := sl[k+2];
Form3.sRadioButton2.Caption := sl[k+3];
Form3.sRadioButton3.Caption := sl[k+4];
Form3.sRadioButton4.Caption := sl[k+5];
closefile(f);
end;
Но в роботе программы появляется такая ошибка
Код:
Аccess violation at address 00000000. Read of adress  00000000
CAMOBAP вне форума Ответить с цитированием
Старый 26.02.2011, 21:20   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
sl:=TStringList.Create;
sl.Text:=res;
sl.free;
Form3.sLabel1.Caption := sl[k+1];
Объект уничтожается (sl.free), затем к нему идет обращение (sl[k+1]). Забавное решение. Как ошибке не быть.
Прик вне форума Ответить с цитированием
Старый 26.02.2011, 21:27   #3
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

аж стыдно. спасибо большое.

Но появляется ошибка. Пишет что обращаюсь к несуществующему элементу массива. Хотя вроде как все правильно .

Последний раз редактировалось Stilet; 27.02.2011 в 16:31.
CAMOBAP вне форума Ответить с цитированием
Старый 26.02.2011, 21:43   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Посмотреть в отладке сколько на самом деле строк в sl.
Откуда уверенность, что в sl 8 строк (исходим из индекса [k+5] = 7)?
Прик вне форума Ответить с цитированием
Старый 26.02.2011, 21:58   #5
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

дело в том что ругаться даже на первую строку!
CAMOBAP вне форума Ответить с цитированием
Старый 26.02.2011, 22:04   #6
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Если "первая" строка это Caption := sl[k+1], то в sl нет и 4-х строк.
[k+1] = 3.
Надо посмотреть в отладке что твориться в sl после присвоения sl.text := res.
Прик вне форума Ответить с цитированием
Старый 26.02.2011, 22:13   #7
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

вот когда прописываю
Код:
sl.loadfromfile(пусть к файлу)
то тогда считывает все норм . значит проблема в дешифровке или в присвоение.

код шифровки вот
Код:
key:='1234';
if not (sMemo1.Text='') then
begin
tnz:=sMemo1.Text;
for i := 0 to (length(tnz) div length(key)) do
    longkey := longkey + key;
for i := 1 to length(tnz) do
begin
    toto := chr((ord(tnz[i]) xor ord(longkey[i])));
    result := result + toto;
end;
if not sSaveDialog1.Execute
then
exit;
fName := sSaveDialog1.FileName;
AssignFile(f, fName);
Rewrite(f);
writeln(f,klik);
writeln(f,result);
CloseFile(f);
такое впечатление что при дешифровке переменная res остается пустой и потому stringlist также пуст.

Последний раз редактировалось Stilet; 27.02.2011 в 16:36.
CAMOBAP вне форума Ответить с цитированием
Старый 27.02.2011, 10:01   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

скидывай проект, проверим махом, а то не понять что ты делаешь и что тебе надо...
phomm вне форума Ответить с цитированием
Старый 27.02.2011, 11:10   #9
CAMOBAP
Форумчанин
 
Регистрация: 07.12.2010
Сообщений: 115
По умолчанию

короче я уже сам разобрался.спасибо всем кто пришел на помощь

Последний раз редактировалось CAMOBAP; 27.02.2011 в 11:23.
CAMOBAP вне форума Ответить с цитированием
Старый 27.02.2011, 11:26   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от phomm
скидывай проект, проверим махом
+ 1

CAMOBAP, уж сколько мы с Вами на страницах форума обсуждали сортировку, обсуждали, а воз и ныне там!

Как минимум косячки из выше предложенного Вами кода:
1)
Цитата:
Код:
writeln(f,klik);
что за переменная? Откуда взялась? Зачем её пишите в выходной файл и где видно, что Вы её читаете?

2) мы с Вами говорили. что в результате XOR могут получится (и получаются!) НЕПЕЧАТНЫЕ символы. В том числе и переводы строк. Так почему Вы упорно продолжаете использовать текстовые файлы?!
и, как бы то ни было, Вы читаете из файла - ОДНУ первую строчку. Естественно, при попытке обратиться ко второй/третьей и т.д. получаете ошибку!!


ДОБАВЛЕНО
Цитата:
Сообщение от CAMOBAP
короче я уже сам разобрался.спасибо всем кто пришел на помощь
У! Здорово! Тогда поздравляю!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringList adr Общие вопросы Delphi 0 05.11.2010 18:43
Поиск в StringList Gerzs Общие вопросы Delphi 1 17.01.2010 20:07
Заполнения StringGrid из StringList xvedar Общие вопросы Delphi 0 03.01.2010 18:04
Раздваивание строки в StringList (Delphi 7) alxd Помощь студентам 8 23.09.2009 13:11
stringlist grater83 Общие вопросы Delphi 2 21.09.2009 14:26