Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 1
1

Переполнение стека

10.04.2015, 18:25. Показов 698. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер)пытаюсь написать программу, но возникла ошибка с переполнением стека в данной процедуре:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
procedure TForm1.Button3Click(Sender: TObject);
var
  buf: string;
  Enc,Dec : TFileStream;
  FileName, buff : String;
  i,n,d,j: LongInt;
begin
  if OpenDialog1.InitialDir = '' then
    OpenDialog1.InitialDir := ExtractFilePath( Application.ExeName )
  ;
  Filename := OpenDialog1.InitialDir;
  if OpenDialog1.Execute then Filename := OpenDialog1.FileName;
 
  try
    Dec:=TFileStream.Create(Filename, fmOpenRead);
    Dec.Seek(0,soFromBeginning);
    i := Dec.Size;
    SetLength(FMes, i div SizeOf(Integer));
    Dec.Read(Pointer(FMes)^,i);
  finally
    Dec.Free;
  end;
    d := StrToIntDef(Edit2.Text,0);
  buf := Decrypt(FMes, d);
 
 
  if SaveDialog1.InitialDir = '' then
    SaveDialog1.InitialDir := ExtractFilePath( Application.ExeName )
  ;
  Filename := SaveDialog1.InitialDir;
  if SaveDialog1.Execute then Filename:= SaveDialog1.FileName;
 
  try
    Enc := TFileStream.Create(Filename, fmCreate);
    Enc.Seek(0,soFromBeginning);
    i := Length(buf) * SizeOf(Char);
    Enc.Write(Pointer(buf)^,i);
    Enc.Size := i;
  finally
    Enc.Free;
  end;
end;
ошибка возникает в цикле функции Decrypt:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function Decrypt(Arr: array of Integer; d:LongInt): string;
var
  res,j:LongInt;
begin
  SetLength(Result, Length(Arr));
  for i := 0 to Length(Arr) - 1 do
  begin
    res:=1;
    for j:=1 to d do
      res:=(res*arr[i]) mod n;
    result[i + 1] := chr(res);
  end;
end;
из-за чего это может быть?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2015, 18:25
Ответы с готовыми решениями:

Переполнение стека
Вот пробую писать программку по поиску в реестре битых ссылок на файлы но столкнулся с такой...

переполнение стека
Здравствуйте. Пишу пару программ, они постепенно развивались, вместе с моими познаниями. Много...

переполнение стека
Помогите довести программу до ума. Все, что я могла с ней сделать - я уже сотворила. В...

переполнение стека!
вот кодprocedure TForm1.CheckBox7Click(Sender: TObject); begin if checkbox7.Checked=false then...

1
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.04.2015, 18:37 2
Цитата Сообщение от morphine____ Посмотреть сообщение
из-за чего это может быть?
Цитата Сообщение от morphine____ Посмотреть сообщение
Delphi
1
2
3
4
5
SetLength(Result, Length(Arr));
  for i := 0 to Length(Arr) - 1 do
 ...
    result[i + 1] := chr(res);
  end;
это происходит в конце цикла, т.е. когда i == Lenght(Arr) - 1 (соответственно массив Result имеет размер Lenght(Arr) (а последний элемент - номер Lenght(Arr) - 1))?

Добавлено через 2 минуты
не переполнение стека, а выход за границы массива
0
10.04.2015, 18:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2015, 18:37
Помогаю со студенческими работами здесь

Ошибка: Переполнение стека
Помогите разобраться непойму в чем дело! Выдает ошибку Переполнение стека! Вот прога моя! В...

Переполнение стека. Модуль
Требуется написать программу вывода таблицы функции, которую оформить в виде процедуры. Функций...

Задан указатель P1 на вершину непустого стека. Создать два новых стека
Добрый вечер, у меня возникла проблемка с такой программкой. Вывести в компонент Label. ...

Стек: Переместить все элементы из первого стека во второй и вывести адрес новой вершины стека
Даны указатели P1 и P2 на вершины двух непустых стеков. Переместить все элементы из первого стека...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru