Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Drovoseck
55 / 55 / 29
Регистрация: 01.01.2014
Сообщений: 214
1

Ошибка Eaccessviolation

02.03.2014, 10:55. Просмотров 1058. Ответов 7
Метки нет (Все метки)

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
library Data_Units;
 
Uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
     Dialogs,ExtCtrls;
 
  Type
Matr = array of array of Integer;
 
Procedure ReadofFile(Mas : Matr; i1,j1 : integer; Path : String);
var
 Txt : TextFile;
 i,j : integer;
 s : String;
 begin
 SetLength(Mas,i1,j1);
 
AssignFile(Txt,Path);
 Reset(Txt);
 
 
 While Not(Eof(Txt)) do
  begin
Inc(j,1);
 Readln(Txt,s);
  For i:=1 to 18 do
 Mas[i,j] := StrtoInt(S[i]);
 
  end;
 
 CloseFile(txt); 
 end;
 
 Exports
ReadofFile;
 
begin
end.
Добавлено через 43 секунды
Eaccessviolation - Это ошибка! когда я уже в проекте запускаю

Добавлено через 1 минуту
Мне кажется где то в Цикле While она
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 10:55
Ответы с готовыми решениями:

EAccessViolation ошибка...
Добрый день. Я уже третий месяц пытаюсь сделать проект "датчик движения", но время от времени, в...

Ошибка: EAccessViolation
допустил ошибку, понятия не имею, в чем она заключается....(отмечена в коде) EAccessViolation ...

EAccessViolation ошибка
EAccessViolation ошибка при нажатии на кнопку, в коде при сложении.... procedure...

Массив классов, ошибка EAccessViolation
Суть такова. Есть класс, описывающий учебные дисциплины. type TSubject = class(TObject) ...

Ошибка: Exception EAccessViolation in module
Добрый день! Люди, помогите, пожалуйста! Ошибка при запуске программы: Exception EAccessViolation...

7
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
28333 / 18870 / 7428
Регистрация: 22.10.2011
Сообщений: 33,007
Записей в блоге: 6
02.03.2014, 11:29 2
Цитата Сообщение от Drovoseck Посмотреть сообщение
Мне кажется где то в Цикле While она
А мне кажется, что, не имея на руках файла, из которого производится чтение, невозможно определить, где ошибка. Навскидку - вариант: индексируются динамические массивы с нуля, а ты индексируешь с единицы, значит, при задании SetLength(10, 18), обращение к Mas[1, 18] приведет к ошибке. Проверяй...
0
FIL
Модератор
3457 / 2583 / 738
Регистрация: 19.09.2012
Сообщений: 7,950
02.03.2014, 11:36 3
Добавлю, что процедура ничего не возвращает в программу.
Нет гарантии, что переданные i1,j1 соответствуют параметрам файла.
0
Drovoseck
55 / 55 / 29
Регистрация: 01.01.2014
Сообщений: 214
02.03.2014, 11:45  [ТС] 4
в файле только это
555555551155555555
555555511115555555
555555110011555555
555555111111555555
555555000000555555
555555000000555555
554400000000002255
544400000000002225
440400000000002022
440400000000002022
544400000000002225
554400000000002255
555555000000555555
555555000000555555
555555333333555555
555555330033555555
555555533335555555
555555553355555555
тут 18 строк и столбцов
0
02.03.2014, 11:45
wendstor
133 / 133 / 64
Регистрация: 15.05.2012
Сообщений: 504
02.03.2014, 11:48 5
1. Это с какого в DLL пишут String. Читаем о string'ах и т.д в dll.
2. соглашение о вызовах.
0
artemka2008
191 / 50 / 10
Регистрация: 27.09.2013
Сообщений: 516
Записей в блоге: 4
02.03.2014, 13:41 6
если я правильно понял. для передачи String из dll нужно использовать sharemem(могу ошибаться).
0
FIL
Модератор
3457 / 2583 / 738
Регистрация: 19.09.2012
Сообщений: 7,950
02.03.2014, 13:59 7
Лучший ответ Сообщение было отмечено Drovoseck как решение

Решение

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
library Project1;
 
uses
  SysUtils,
  Classes;
 
type
  TMatr = array of array of Integer;
  PMatr = ^TMatr;
 
Procedure ReadofFile(Mas: PMatr; i, j: Integer; Path: PAnsiChar);
var
 Txt : TextFile;
 s : String;
 begin
AssignFile(Txt, String(Path));
 Reset(Txt);
  SetLength(Mas^,i,j);
 i := 0;
 While Not(Eof(Txt)) do
  begin
 Readln(Txt,s);
  For j:=0 to high(Mas^[i]) do
 Mas^[i,j] := StrtoInt(S[j+1]);
  Inc(i);
  end;
 
 CloseFile(txt);
 end;
 
 Exports
ReadofFile;
begin
end.
вызов:
Delphi
1
ReadofFile(@m, 2, 3, PAnsiChar(ExtractFilePath(Application.ExeName) + '1.txt'));
1
Drovoseck
55 / 55 / 29
Регистрация: 01.01.2014
Сообщений: 214
03.03.2014, 18:01  [ТС] 8
Помог Указатель на массив ! а путь можно и в стринге писать. Спасибо
0
03.03.2014, 18:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2014, 18:01

Ошибка: class EAccessViolation with message
При запуске выдаёт ошибкуProject Project1.exe raised exception class EAccessViolation with message...

Ошибка EAccessViolation. Что делать?
Приветствую всех! Как можно разрешить странную ошибку eaccessviolation? Дело в том, что я пока...

Ошибка EAccessViolation в своей процедуре
Есть массив объявленный глобально, в обычных процедурах с ним можно делать что угодно... Когда...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.