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

Access Violation в подпрограмме

07.05.2014, 20:58. Показов 554. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго вечера, не сильно разбираюсь в Deplhi, почти написал программу, которая по заданным числам массива из 11 элементов, сначала располагает все положительные числа в порядке возрастания, а затем нули и отрицательные в порядке убывания. При выводе массива, выводит ошибку 'Access Violation at 0x30303030:read of adress 0x30303030'.
Однако выводится 4 числа, а на 5-м выпадает, но если задать, что в массиве 12 элементов, всё нормально будет.

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
43
44
45
46
47
var
  A: array [1 .. 11] of real;
  i: integer;
 
Procedure Ubyv(var A: array of real);
var
  L, M: integer;
  K: real;
begin
  for L := 1 to 15 do
    for M := 1 to 10 do
      if A[M] < A[M + 1] then
      begin
        K := A[M];
        A[M] := A[M + 1];
        A[M + 1] := K;
      end;
end;
 
Procedure Vozrast(var A: array of real);
var
  L, M: integer;
  K: real;
begin
  for L := 1 to 15 do
    M := 1;
  for M := 1 to 4 do
    if A[M] > A[M + 1] then
    begin
      K := A[M];
      A[M] := A[M + 1];
      A[M + 1] := K;
    end;
end;
 
begin
  i := 1;
  writeln('Vvedite chisla');
  for i := 1 to 11 do
    Readln(A[i]);
  Ubyv(A);
  Vozrast(A);
  for i := 1 to 11 do
    Write(A[i]:5:2);
  Readln;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2014, 20:58
Ответы с готовыми решениями:

AssignFile и access violation
Подскажите, в каких случаях может возникать ошибка access violation в строке с AssignFile? //...

Access violation at adress
Собственно говоря, вот элемент кода, ошибка при попытке выполнить сроку setlength(masofFD2, fv2);...

Access violation при сравнении изображений
делаю программу для сравнения изображений перевожу в битмапы и потом смотрю по цвету пикселя...

Access Violation при BitMap.Create
Доброго Времени Суток! У меня в коде используется двусвязный список типа Tinf=record {тип...

7
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2014, 21:05 2
Цитата Сообщение от zllo Посмотреть сообщение
for L := 1 to 15 do
От какой балды это 15 взялось ?
0
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
07.05.2014, 21:10  [ТС] 3
15, чтобы он не 1 раз цикл провел по I, а 15 раз, грубо говоря цикл-повторитель. На Фортране учили, там это работало.
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2014, 21:16 4
Цитата Сообщение от zllo Посмотреть сообщение
не 1 .., а 15 раз
Я и спрашиваю - почему именно 15 ? Почему не 3, не 200, не 100500 ?)

Добавлено через 1 минуту
Цитата Сообщение от zllo Посмотреть сообщение
for M := 1 to 4 do
А здесь 4 от какой балды ? Потому что Васик учили и там это работало ?)

Добавлено через 39 секунд
Цитата Сообщение от zllo Посмотреть сообщение
M := 1;
А это зачем ?
0
2 / 2 / 0
Регистрация: 07.05.2014
Сообщений: 32
07.05.2014, 21:22  [ТС] 5
mss, в Фортране брал по 10-20, тут решил 15 взять. Сейчас пробовал увеличивать его, потом уменьшать, дошел 1 to 1, вывел 10 чисел, чем число L больше, тем меньше чисел он выводит. Но если это число L я уберу, тогда как мне лучше сделать, чтобы он не 1 раз прошел I, а несколько раз?

Добавлено через 2 минуты
mss, там 4 идет от условия задачи, мне нужно чтобы первые 5 чисел располагались по возрастанию. После первой подпрограммы он весь по убыванию, а только первые 5 должны быть по возрастанию.
М := 1, да что-то химичил раньше, забыл убрать)
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2014, 21:25 6
Цитата Сообщение от zllo Посмотреть сообщение
как мне лучше сделать
Лучше взять учебник и проштудировать алгоритм пузырьковой сортировки.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
07.05.2014, 21:25 7
Цитата Сообщение от zllo Посмотреть сообщение
A: array [1 .. 11] of real;
Цитата Сообщение от zllo Посмотреть сообщение
Procedure Ubyv(var A: array of real);
Имхо слишком вольно подсовывать статический массив в качестве открытого массива.
0
mss
07.05.2014, 21:28     Access Violation в подпрограмме
  #8

Не по теме:

слишком вольно подсовывать статический массив в качестве открытого массива
И об этом в учебнике тоже написано)
Но штудировать учебник - не царское дело

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2014, 21:28

Создание COM-сервера.Ошибка Access violation
Возникла проблема при создании COM-сервера. Поэтапно: 1.Создаю библиотеку ActiveX Library...

Delphi XE5 + TComPort 4.13 = access violation
Помогите разобраться с проблемой. В основной форме вызываю настройки Com порта, тут же...

Access violation at address при запуске потоков
Всем привет, запускаю несколько потоков но получаю ошибку http://************/13xzpg Код запуска...

TList. Ошибка Access Violation при создании.
Имеется такая структура данных: type TMyList = class private FMyList: TList; public...


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

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