powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
16 сообщений из 16, страница 1 из 1
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865057
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Подскажите пожалуйста, из-за чего может быть такая ошибка?:
Access violation at address 77304CB3 in module 'ntdll.dll'. Read of address 0204F7C8
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865061
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Здравствуйте!
Подскажите пожалуйста, из-за чего может быть такая ошибка?:
Access violation at address 77304CB3 in module 'ntdll.dll'. Read of address 0204F7C8 Чаще всего это происходит, когда в функции этой all передают кривые параметры.
Еще могут быть и глюки винды, конечно, но это в 100000000 раз реже.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865084
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Здравствуйте!
Подскажите пожалуйста, из-за чего может быть такая ошибка?:
Access violation at address 77304CB3 in module 'ntdll.dll'. Read of address 0204F7C8
Гадаю по адресам :) Давай код.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865100
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ziv-2014Гадаю по адресам :) Давай код.
Код: pascal
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
   private
    { Private declarations }
     vbmapFs, sbmapFs, vbmapRs, sbmapRs: TBitmap;
     procedure LoadImage(FileName1, FileName2: string);
     procedure DrawImage;
     procedure TextOutOnForm(Canvas: TCanvas; X1, X2, Y, N: integer; Text: string);
     procedure BuildImage;
  public
   { Public declarations }

  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}



{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  // vbmapFs хранит готовое изображение для отображения 1
  vbmapFs := TBitmap.Create;
  vbmapFs.Width  := 1;
  vbmapFs.Height := 1;
  vbmapFs.PixelFormat := pf24bit;

  // sbmapFs хранит исходное изображение бланка  1
  sbmapFs := TBitmap.Create;
  sbmapFs.Width  := 1;
  sbmapFs.Height := 1;
  sbmapFs.PixelFormat := pf24bit;

    // vbmapRs хранит готовое изображение для отображения 2
  vbmapRs := TBitmap.Create;
  vbmapRs.Width  := 1;
  vbmapRs.Height := 1;
  vbmapRs.PixelFormat := pf24bit;

  // sbmapRs хранит исходное изображение бланка 2
  sbmapRs := TBitmap.Create;
  sbmapRs.Width  := 1;
  sbmapRs.Height := 1;
  sbmapRs.PixelFormat := pf24bit;

  LoadImage('Original1.bmp','Original2.bmp');
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  vbmapFs.Destroy;
  sbmapFs.Destroy;
  vbmapRs.Destroy;
  sbmapRs.Destroy;
end;

procedure TForm1.TextOutOnForm(Canvas: TCanvas; X1, X2, Y, N: integer;
  Text: string);
var
  i: integer;
  k: double;
begin
  
  Canvas.MoveTo(X1, Y - 10);
  Canvas.LineTo(X1, Y     );
  Canvas.MoveTo(X2, Y - 10); 
  Canvas.LineTo(X2, Y     );

  if N > 1 then k := (X2 - X1) / (N - 1) // Шаг символов
           else k := 1;
  if Length(Text) > N then
    SetLength(Text, N);

  for i := 0 to Length(Text) - 1 do
    Canvas.TextOut(X1 + Round(K*i - Canvas.TextWidth(Text[i+1])/2), Y, Text[i+1]);
end;

procedure TForm1.BuildImage;
begin
 // Очистка фона 1/
  vbmapFs.Width  := sbmapFs.Width ;
  vbmapFs.Height := sbmapFs.Height;
  vbmapFs.PixelFormat := pf24bit;
  vbmapFs.Canvas.Draw(0, 0, sbmapFs);

 // Очистка фона 2/
  vbmapRs.Width  := sbmapRs.Width ;
  vbmapRs.Height := sbmapRs.Height;
  vbmapRs.PixelFormat := pf24bit;
  vbmapRs.Canvas.Draw(0, 0, sbmapRs);

  // Параметры шрифта
  vbmapFs.Canvas.Font.Name := 'Arial';
  vbmapFs.Canvas.Font.Size := 16;

  // Вывод текста
  TextOutOnForm(vbmapFs.Canvas, 203, 1382, 337, 35, SuName.Text);

end;

procedure TForm1.DrawImage;
var
  nw, nh: integer;
begin
  nw := vbmapFs.Width  - 4;
  nh := vbmapFs.Height - 4;
  if cbZoom.ItemIndex = 0 then begin
    // Уместить в окне
    nh := ScrollBox1.Height - 4;
    nw := Round(ScrollBox1.Height*vbmapFs.Width /vbmapFs.Height) - 4;
    if nw > ScrollBox1.Width  then begin
      nw := ScrollBox1.Width  - 4;
      nh := Round(ScrollBox1.Width *vbmapFs.Height/vbmapFs.Width ) - 4;
    end;
  end;
  if cbZoom.ItemIndex = 2 then begin
    // Масштаб 50%
    nw := (vbmapFs.Width  - 4) div 2;
    nh := (vbmapFs.Height - 4) div 2;
  end;

  with PaintBox1 do begin
    Width  := nw;
    Height := nh;
    Canvas.Lock;
    // Задать режим масштабирования со сглаживанием
    SetStretchBltMode(Canvas.Handle, HALFTONE);
    // Скопировать картинку с масштабированием
    StretchBlt(Canvas.Handle, 0, 0, Width , Height, vbmapFs.Canvas.Handle,
               0, 0, vbmapFs.Width , vbmapFs.Height, SRCCOPY);
    Canvas.Unlock;
  end;
end;

procedure TForm1.LoadImage(FileName1, FileName2: string);
var
  pic1, pic2: TPicture;
begin
  if not FileExists(FileName1) then  MessageDlg('Файл '+FileName1+' не найден', mtWarning,[mbOk], 0)
  else if not FileExists(FileName1) then  MessageDlg('Файл '+FileName2+' не найден', mtWarning,[mbOk], 0)
  else
    begin
       pic1 := TPicture.Create;
       pic1.LoadFromFile(FileName1);
       sbmapFs.Width  := pic1.Graphic.Width ;
       sbmapFs.Height := pic1.Graphic.Height;
       sbmapFs.PixelFormat := pf24bit;
       sbmapFs.Canvas.Draw(0, 0, pic1.Graphic);
       pic1.Destroy;

       pic2 := TPicture.Create;
       pic2.LoadFromFile(FileName2);
       sbmapRs.Width  := pic2.Graphic.Width ;
       sbmapRs.Height := pic2.Graphic.Height;
       sbmapRs.PixelFormat := pf24bit;
       sbmapRs.Canvas.Draw(0, 0, pic2.Graphic);
       pic2.Destroy;
    end;
end;

procedure TForm1.SuNameChange(Sender: TObject);
begin
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;

procedure TForm1.PaintBox2Paint(Sender: TObject);
begin
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;

procedure TForm1.ScrollBox1Resize(Sender: TObject);
begin
  BuildImage; // Построение изображения
end;

procedure TForm1.cbZoomChange(Sender: TObject);
begin
  BuildImage; // Построение изображения
  DrawImage; // Обновление картинки на экране
end;
end.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865128
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32,

Пока непонятно. Надо в отладчике смотреть, на какой строке падает.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865135
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  with PaintBox1 do begin
    Width  := nw;
    Height := nh;
    Canvas.Lock;
    // Задать режим масштабирования со сглаживанием
    SetStretchBltMode(Canvas.Handle, HALFTONE);
    // Скопировать картинку с масштабированием
    StretchBlt(Canvas.Handle, 0, 0, Width , Height, vbmapFs.Canvas.Handle,
               0, 0, vbmapFs.Width , vbmapFs.Height, SRCCOPY);
    Canvas.Unlock;
  end;


Всё рисование на PaintBox'е должно производиться в его методе OnPaint, не?..
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865191
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRockЖеня32,

Пока непонятно. Надо в отладчике смотреть, на какой строке падает.
В общем я нашел код, из-за которого возникает ошибка... Но, почему это происходит, я не понял...
И так, когда кода удалишь код, в котором используются вот эти переменные: vbmapRs, sbmapRs: TBitmap; , ошибка пропадает.
Почему так?
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865192
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvpВсё рисование на PaintBox'е должно производиться в его методе OnPaint, не?..
Да, как-то бес разнице, лишь бы рисовалось.......
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865194
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32YuRockЖеня32,

Пока непонятно. Надо в отладчике смотреть, на какой строке падает.
В общем я нашел код, из-за которого возникает ошибка... Но, почему это происходит, я не понял...
И так, когда кода удалишь код, в котором используются вот эти переменные: vbmapRs, sbmapRs: TBitmap; , ошибка пропадает.
Почему так?Слишком радикально.
Надо найти строку с вызовом функции, на которой падает.
И посмотреть на параметры, передающиеся в нее.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39865195
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для этого достаточно посмотреть на Call Stack в момент падения.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866779
Женя32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRockСлишком радикально.
Надо найти строку с вызовом функции, на которой падает.
И посмотреть на параметры, передающиеся в нее.
Ошибка возникает при загрузки файла, вот на этой строке:
Код: pascal
1.
 pic1.LoadFromFile(FileName1);


В процедуре:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm1.LoadImage(FileName1, FileName2: string);
var
  pic1, pic2: TPicture;
begin
       pic1 := TPicture.Create;
       ShowMessage(FileName1);
       pic1.LoadFromFile(FileName1);
       sbmapFs.Width  := pic1.Graphic.Width ;
       sbmapFs.Height := pic1.Graphic.Height;
       sbmapFs.PixelFormat := pf24bit;
       sbmapFs.Canvas.Draw(0, 0, pic1.Graphic);
       pic1.Destroy;
...
end;


YouTube Video
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866795
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32Ошибка возникает при загрузки файла, вот на этой строке:
Код: pascal
1.
 pic1.LoadFromFile(FileName1);

Ну вот, ты приближаешься к результату.
Теперь поставь там брэйкпоинт, добавь в пути проекта пути исходников VCL/RTL, нажми билд олл и продолжай дебажить (внутрь), пока не найдешь причину. Если есть желание.

П.С. Не надо так писать никогда:
Код: pascal
1.
2.
3.
4.
pic1 := TPicture.Create;
pic1.LoadFromFile(FileName1);
...
pic1.Destroy;


Отвыкай сразу, иначе толку не будет.
Исключение всегда вероятно, но в данном случае - очень вероятно (оно и происходит) по разным причинам.
Необходимо писать так и только так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
pic1 := TPicture.Create;
try
  pic1.LoadFromFile(FileName1);
  ...
finally
  pic1.Destroy;
end;
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866810
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя32YuRockСлишком радикально.
Надо найти строку с вызовом функции, на которой падает.
И посмотреть на параметры, передающиеся в нее.
Ошибка возникает при загрузки файла, вот на этой строке:
Код: pascal
1.
 pic1.LoadFromFile(FileName1);


В процедуре:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm1.LoadImage(FileName1, FileName2: string);
var
  pic1, pic2: TPicture;
begin
       pic1 := TPicture.Create;
       ShowMessage(FileName1);
       pic1.LoadFromFile(FileName1);
       sbmapFs.Width  := pic1.Graphic.Width ;
       sbmapFs.Height := pic1.Graphic.Height;
       sbmapFs.PixelFormat := pf24bit;
       sbmapFs.Canvas.Draw(0, 0, pic1.Graphic);
       pic1.Destroy;
...
end;


...
Битый файл, например.
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866875
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может ошибаюсь, но вроде это с TPicture было. Там то ли для компонента с Owner=nil или Parent=nil как раз AV вылетало
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866881
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повспоминал, повспоминал: нет, это не TPicture был
...
Рейтинг: 0 / 0
Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
    #39866915
V.Borzov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockТеперь поставь там брэйкпоинт, добавь в пути проекта пути исходников VCL/RTL, нажми билд олл и продолжай дебажить (внутрь), пока не найдешь причину. Если есть желание.

Можно не добавлять в пути проекта исходники, а в настройках проекта на закладке "Delphi Compiler/Compiling" включить опцию "Use debug .dcus".
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как исправить?: Access violation at address 77304CB3 in module 'ntdll.dll'.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]