powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление в бд ORACLE
18 сообщений из 43, страница 2 из 2
Добавление в бд ORACLE
    #39617794
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

если отладчик по какой-то причине не доступен, можешь взять сторонние средства: EurekaLog или Mad Except, что бы словить ошибки.
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39617948
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39617961
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
apexplsqlasutp2,


а теперь запусти софтину под отладчиком и посмотри, где свалится
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39617965
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

AV говорит о том, что скорее всего не создан экземпляр form2
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39617997
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Со дна я вытащил живого партизана,
Не знал он, бедный, что закончилась война"
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618019
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,
Я так понял консоль не работает с формой, а можно её как то присоединить ?
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618027
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
apexplsqlasutp2,
Я так понял консоль не работает с формой, а можно её как то присоединить ?
С формой работает т.к. переменные выводятся с формы на консоль. В чем может быть ещё ошибка ?
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618050
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

предлагаю показать здесь полностью весь dpr-файл проекта
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618055
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Будет прикольно, если окажется AVapexplsqlasutp2,
Где мой золотой хрустальный шар?
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618058
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,
Код: 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.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
program EnumCards;

{$APPTYPE CONSOLE}


uses
  Vcl.Forms,
  Windows,
  SysUtils,
  SyncObjs,
  ActiveX,
  ZBase,
  Dialogs,
  ZPort,
  ZReader,
  ZRClasses,
  Utils,
  DateUtils,
  Unit2 in 'Unit2.pas' {Form2};

type
  TForm2 = class(TForm)

  end;
const
  RdPortType = ZP_PORT_COM;
  RdPortName = 'COM5';
var
   g_hRd: THandle;  // Дескриптор устройства
  g_oEvent: TEvent = nil;
  g_fThreadActive: Boolean;
  g_hThread: THandle = 0;



function CheckNotifyMsgs(): HResult;
var
  s: integer;
  a: integer;
  b: string;
  c: integer;
  nMsg: Cardinal;
  nMsgParam: NativeInt;
  pInfo: PZR_CARD_INFO;
begin
      s:=5;
      a:=7;
      b:= '12.12.12';
      c:=9;

  repeat
    Result := ZR_Rd_GetNextMessage(g_hRd, nMsg, nMsgParam);
    if Result <> S_OK then
      break;
    case nMsg of
      ZR_RN_CARD_INSERT:
      begin

        pInfo := PZr_Card_Info(nMsgParam);
        ASSERT(pInfo <> nil);
        Writeln(format('Card insert: %s %s', [
  {-----}    CardTypeStrs[pInfo.nType], ZKeyNumToStr(pInfo.nNum, pInfo.nType)]));
               Writeln(s);
              try
  form2.ADOQuery1.SQL.Text:= 'INSERT INTO INFO_CARD VALUES (5,7,''12.12.2012'',9);';
  form2.ADOQuery1.ExecSQL;
except
  on E: Exception do
    ShowMessage(E.ClassName + ', ' + E.Message);
end;

      end;
      ZR_RN_CARD_REMOVE:
      begin
        pInfo := PZr_Card_Info(nMsgParam);
        ASSERT(pInfo <> nil);
{-----} Writeln(format('Card removed: %s %s', [
            CardTypeStrs[pInfo.nType], ZKeyNumToStr(pInfo.nNum, pInfo.nType)]));
      end;
    end;
  until False;
  if Result = ZP_S_NOTFOUND then
    Result := S_OK;
end;


function NotifyThreadProc(AParameter: Pointer): Cardinal; stdcall;
begin
  while g_fThreadActive do
		if g_oEvent.WaitFor() = wrSignaled then
    begin
			g_oEvent.ResetEvent();
      if g_hRd <> 0 then
        CheckNotifyMsgs();


    end;
  Result := 0;
end;

procedure StartNotifyThread();
var
  nThreadId: Cardinal;
begin
  if g_hThread <> 0 then
    Exit;
  g_fThreadActive := True;
  g_hThread := CreateThread(nil, 0, @NotifyThreadProc, nil, 0, nThreadId);
end;

procedure StopNotifyThread();
begin
  if g_hThread = 0 then
    Exit;
  g_fThreadActive := False;
  g_oEvent.SetEvent();
  WaitForSingleObject(g_hThread, INFINITE);
  CloseHandle(g_hThread);
end;

procedure DoTest();
var
  rOpen: TZr_Rd_Open_Params;
  rRdInf: TZr_Rd_Info;
  rNS: TZr_Rd_Notify_Settings;
  nCardCount: Integer;
  hr: HResult;
  rInfo: TZr_Card_Info;
  traa:integer;
begin
  traa:=55;
  SetConsoleOutputCP(1251); // Переключение консоли на кодовую страницу CP1251 (Windows-1251).

  if not CheckZRVersion() then
  begin
    Writeln('Wrong version SDK.');
    Readln;
    exit;
  end;

  CheckZRError(ZR_Initialize(ZP_IF_NO_MSG_LOOP or ZP_IF_LOG));
  try
    Writeln(format('Open reader (%s)...', [RdPortName]));
    FillChar(rOpen, SizeOf(rOpen), 0);
    rOpen.pszName := PChar(RdPortName);
    rOpen.nType := RdPortType;
    FillChar(rRdInf, SizeOf(rRdInf), 0);
    CheckZRError(ZR_Rd_Open(g_hRd, rOpen, @rRdInf));

    Writeln(format('%s, sn: %d, v%d.%d', [
        ReaderTypeStrs[rRdInf.nType],
        rRdInf.rBase.nSn,
        rRdInf.rBase.nVersion and $ff, (rRdInf.rBase.nVersion shr 8) and $ff]));

    Writeln('Search cards...');
    Writeln(tra);
    nCardCount := 0;
    CheckZRError(ZR_Rd_SearchCards(g_hRd));
    repeat
      hr := ZR_Rd_FindNextCard(g_hRd, @rInfo);
      if hr <> S_OK then
        break;
      Inc(nCardCount);
      Writeln(format('%d. Type: %s; Number: %s', [
          nCardCount, CardTypeStrs[rInfo.nType], ZKeyNumToStr(rInfo.nNum, rInfo.nType)]));
    until False;
    CheckZRError(hr);
    ZR_Rd_FindNextCard(g_hRd, nil);

    Writeln('--------------');
    if nCardCount > 0 then
      Writeln(format('Found %d cards', [nCardCount]))
    else
      Writeln('Cards not found.');

    // Настраиваем уведомления
    g_oEvent := TEvent.Create(nil, True, False, '');
    FillChar(rNS, SizeOf(rNS), 0);
    rNS.nNMask := ZR_RNF_EXIST_CARD;
    rNS.hEvent := g_oEvent.Handle;
    CheckZRError(ZR_Rd_SetNotification(g_hRd, @rNS));
    StartNotifyThread();
    Writeln('Wait card...');
    Readln;
  finally
    StopNotifyThread();
    if g_hRd <> 0 then
      Zr_CloseHandle(g_hRd);
    if g_oEvent <> nil then
      g_oEvent.Free();
    ZR_Finalyze();
  end;
end;

begin


      with Unit2.TForm2.Create(nil) do

  try
    { TODO -oUser -cConsole Main : Insert code here }

    DoTest();
  except
    on E: Exception do
    begin
      Writeln(E.ClassName, ': ', E.Message);
      Readln;
    end;
  end;
end.
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618066
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsqlС формой работает т.к. переменные выводятся с формы на консоль. В чем может быть ещё ошибка ?
В приведённом коде нет создания экземпляра Form2. Есть только использование этого экземпляра, что приводит к ошибке доступа.
Экземпляр нужно примерно так создавать:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Form2 := TForm2.Create(nil);
try
  // использование
  try
    form2.ADOQuery1.SQL.Text:= 'INSERT INTO INFO_CARD VALUES (5,7,''12.12.2012'',9);';
    form2.ADOQuery1.ExecSQL;
  except
    on E: Exception do
      ShowMessage(E.ClassName + ', ' + E.Message);
  end;
finally
  FreeAndNil(Form2);
end;
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618068
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
goldmi45apexplsqlС формой работает т.к. переменные выводятся с формы на консоль. В чем может быть ещё ошибка ?
В приведённом коде нет создания экземпляра Form2.

есть там создание:

Код: pascal
1.
  with Unit2.TForm2.Create(nil) do
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618069
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
только это не то создание, которое у тебя ))))
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618079
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо Form стоит использовать DataModule. Но его тоже следует создавать.
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618094
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
экземпляр формы создается вызовом
Код: pascal
1.
with Unit2.TForm2.Create(nil) do

но переменной form2 этот экземпляр не присваивается. Вот и AV.

для быстрых костылей можно переписать так:
Код: pascal
1.
2.
Unit2.form2 := TForm2.Create(nil);
with Unit2.form2 do



Хотя за такое я бы сам себя уволил бы)))
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618126
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,
Но так как вы написали ошибка: [dcc32 Error] EnumCards.dpr(229): E2010 Incompatible types: 'Unit2.TForm2' and 'EnumCards.TForm2'
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618138
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apexplsql,

удали в dpr-файле строки
Код: pascal
1.
2.
3.
4.
type
  TForm2 = class(TForm)

  end;
...
Рейтинг: 0 / 0
Добавление в бд ORACLE
    #39618178
apexplsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,
Так появляется ошибка что не вызван CoInitialize.
А если добавить CoInitialize(Nil); сюда:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
 CoInitialize(Nil);
              try
  form2.ADOQuery1.SQL.Text:= 'INSERT INTO INFO_CARD VALUES (5,7,''12.12.2012'',9);';
  form2.ADOQuery1.ExecSQL;
except
  on E: Exception do
    ShowMessage(E.ClassName + ', ' + E.Message);
end;


То ошибка всё равно как и была с самого начала(На вложенном изображении)
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление в бд ORACLE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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