Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/82: Рейтинг темы: голосов - 82, средняя оценка - 4.73
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307

Передача структуры данных в DLL (stdcall)

18.11.2009, 21:05. Показов 17774. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу передать данные следующей структуры в DLL:
Поле1: Символьный тип, длинной 15 букв (Pole_1: String[15])
Поле2: "Циферный" тип, длинной 5 цифр

И

Поле3: Символьный тип, длинной 15 букв (Pole_1: String[15])
Поле4: "Циферный" тип, длинной 5 цифр

Поле3 и Поле4 для того что бы DLL записал свои данные, которые я смогу прочитать в моей программе...

Как мне указать длинну всех этих полей?

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
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure CobCall (WS_CAMPO1: String; WS_CAMPO2: String); stdcall;
  external 'COB.DLL' name'COBPROG';
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
WS_CAMPO1: String;
WS_CAMPO2: String;
begin
WS_CAMPO1:=Edit1.Text;
CobCall (WS_CAMPO1,WS_CAMPO2);
Edit2.text:=WS_CAMPO2;
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2009, 21:05
Ответы с готовыми решениями:

Передача структуры из программы на c# в dll на c++ и получение структуры из dll
В общем проблема в том, что при попытке передачи структуры созданной в c# в dll на c++ происходит событие pinvokestackimbalance Гуглил...

Конфликт forward и stdcall в dll-библиотеке
Добрый день. Есть некая библиотека library S_dll; uses ...; {$R *.res} var ... function LInit:Integer; stdcall;

Передача структуры из C# в DLL на C++
Здравствуйте! Вот такой вопросик, можете подсказать варианты передачи структуры в DLL написанную на C++? Есть обертка для DLL на...

52
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.01.2010, 21:07
Студворк — интернет-сервис помощи студентам
Сейчас погляжу...

Добавлено через 1 час 58 минут
Kukstyler, видимо, надо копать саму DLL. Порядок передачи параметров вроде верно отрабатывает. А вариант с размещением данных в одной длинной строковой переменной (или в массиве типа Char) - это идея. Хотя, конечно, работа с таким массивом доставит неудобства...
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
29.01.2010, 19:01  [ТС]
Блин, не знаю, чё-то тут не то... Как может действовать на передачу данных просто количество контролей (Edit, Memo) в Form-е? Я этого не понимаю, то есть я сажаю лишний Мemo в Form (для просмотра структуры данных во время проверок), и всё пашет, снимаю его не меняя остального текста и часть сходит с ума.... Как может индекс в for-е быть разным при одних и тех же данных, просто нажимая на кнопку вызывающую Кобол прогу несколько раз? Вот я ввожу данные, нажимаю на кнопку и вывожу на экран индекс в for-е: нажал один раз - он 164, второй - он 28, третий - он 28, перенёс фокус на другое поле, опять нажал - он 24, опять нажал - он 28.... Это сумасшествие какое-то....
Не знаю как в Delphi, в Коболе данные сходят с ума таким образом в одном случае - когда 2-х мерный массив, как бы виртуальный внутренний "Grid" переливается через край, то бишь индех по которому программа обращается к массиву выше обявленной длинны/шерены самого массива... Ну тут Кобол прога вообще непричём (проверял), а вот почему в Delphi такое происходит я, не могу понять....
Сейчас у меня пашет всё кроме поля MENSAJE...
Оставляю код, и скомпилированную прогу...

Вот и скриншот - смотри, всё классно кроме последнего поля, в котором кроме инфы плюс и всякий мусор... Откуда он там? Само поле получающее эти данные я очищаю как и все остальные, но в этом случае результат не тот... В принципие я наверное могу перосто скрыть мусор в поле... Но просто это не дело, очевидно тут что-то не так и хочу узнать что именно....

http://img690.imageshack.us/img690/466/nuria.png
Вложения
Тип файла: rar NURIA2.rar (278.4 Кб, 9 просмотров)
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
29.01.2010, 19:02  [ТС]
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
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
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;
type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    ListBox1: TListBox;
    XPManifest1: TXPManifest;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    validar: TButton;
    limpiar: TButton;
    GroupBox3: TGroupBox;
    odate: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    returncode: TEdit;
    MENSAJE: TLabel;
    Label4: TLabel;
    FORMATO: TLabel;
    Label5: TLabel;
    otime: TEdit;
    Label6: TLabel;
    ostamp: TEdit;
    Label7: TLabel;
    outnum: TEdit;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure VALIDARClick(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure limpiarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
X238  = array[1..238] of Char;
procedure CobCall (var WS_pasadatos: X238)
        pascal; external 'PBDMR001.dll' name'PBDMR001';
 
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items.Add('1  - Validar una Fecha');
  ListBox1.Items.Add('2  - Validar una Hora');
  ListBox1.Items.Add('3  - Validar TIMESTAMP');
  ListBox1.Items.Add('4  - Sumar un número de días a una fecha');
  ListBox1.Items.Add('5  - Sumar un número de meses a una fecha');
  ListBox1.Items.Add('6  - Sumar un número de años a una fecha');
  ListBox1.Items.Add('7  - Sumar un número de horas a la hora indicada');
  ListBox1.Items.Add('8  - Sumar un número de minutos a la hora indicada');
  ListBox1.Items.Add('9  - Sumar un número de segundos a la hora indicada');
  ListBox1.Items.Add('10 - Sumar un número de días a TIMESTAMP');
  ListBox1.Items.Add('11 - Sumar un número de meses a TIMESTAMP');
  ListBox1.Items.Add('12 - Sumar un número de años a TIMESTAMP');
  ListBox1.Items.Add('13 - Sumar un número de horas a TIMESTAMP');
  ListBox1.Items.Add('14 - Sumar un número de minutos a TIMESTAMP');
  ListBox1.Items.Add('15 - Sumar un número de segundos a TIMESTAMP');
  ListBox1.Items.Add('16 - Calcular la diferencia en días entre 2 fechas');
  ListBox1.Items.Add('17 - Calcular la diferencia en segundos entre 2 horas');
  MENSAJE.Caption := '';
  ListBox1.ItemIndex:=0;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
  IF  (Edit1.Text = '') or
      (Edit1.Text = ' ') then
      begin
      VALIDAR.Enabled := false;
      Edit1.Text := '';
      end
  else
      begin
      VALIDAR.Enabled := true;
  end;
 
end;
procedure TForm1.VALIDARClick(Sender: TObject);
var
//*************************************************
//* CAMPOS AUXILIARES
//*************************************************
  aux: String[72];
  auxopc: String[3];
  idx: integer;
  idx2: integer;
  OUT_DATE: string[10];
  OUT_TIME: string[8];
  OUT_STAMP: string[26];
  OUT_NUMMER: string[6];
  RETCOD: string[3];
  DESCRIP: string[80];
//  FILLER: string[30];
//--------------------
  WS_pasadatos : X238;
begin
//-------- PASA OPCION
if  ListBox1.ItemIndex=0 then
    begin
    auxopc:='001';
end;
if  ListBox1.ItemIndex=1 then
    begin
    auxopc:='002';
end;
if  ListBox1.ItemIndex=2 then
    begin
    auxopc:='003';
end;
if  ListBox1.ItemIndex=3 then
    begin
    auxopc:='004';
end;
if  ListBox1.ItemIndex=4 then
    begin
    auxopc:='005';
end;
if  ListBox1.ItemIndex=5 then
    begin
    auxopc:='006';
end;
if  ListBox1.ItemIndex=6 then
    begin
    auxopc:='007';
end;
if  ListBox1.ItemIndex=7 then
    begin
    auxopc:='008';
end;
if  ListBox1.ItemIndex=8 then
    begin
    auxopc:='009';
end;
if  ListBox1.ItemIndex=9 then
    begin
    auxopc:='010';
end;
if  ListBox1.ItemIndex=10 then
    begin
    auxopc:='011';
end;
if  ListBox1.ItemIndex=11 then
    begin
    auxopc:='012';
end;
if  ListBox1.ItemIndex=12 then
    begin
    auxopc:='013';
end;
if  ListBox1.ItemIndex=13 then
    begin
    auxopc:='014';
end;
if  ListBox1.ItemIndex=14 then
    begin
    auxopc:='015';
end;
if  ListBox1.ItemIndex=15 then
    begin
    auxopc:='016';
end;
if  ListBox1.ItemIndex=16 then
    begin
    auxopc:='017';
end;
for idx:= 1 to 238 do begin
    WS_pasadatos[idx]:=' '
end;
for idx:= 1 to 72 do begin
    aux[idx]:=' '
end;
aux:=Edit1.text;
idx2:= 1;
for idx:= 1 to 3 do begin
    WS_pasadatos[idx]:=auxopc[idx2];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 4 to 75 do begin
    WS_pasadatos[idx]:=aux[idx2];
    idx2:=idx2+1;
end;
//***********************************************************
  CobCall (WS_pasadatos);
//***********************************************************
  OUT_DATE:='          ';
  OUT_TIME:='        ';
  OUT_STAMP:='                          ';
  OUT_NUMMER:='      ';
  RETCOD:='   ';
  for idx:= 1 to 80 do begin
    DESCRIP[idx]:=' ';
  end;
//----------------------------------------
idx2:= 1;
for idx:= 76 to 85 do begin
    OUT_DATE[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 86 to 93 do begin
    OUT_TIME[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 94 to 119 do begin
    OUT_STAMP[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 120 to 125 do begin
    OUT_NUMMER[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 126 to 128 do begin
    RETCOD[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
idx2:= 1;
for idx:= 129 to 208 do begin
    DESCRIP[idx2]:=WS_pasadatos[idx];
    idx2:=idx2+1;
end;
ODATE.Text:=OUT_DATE;
OTIME.Text:=OUT_TIME;
OSTAMP.Text:=OUT_STAMP;
OUTNUM.Text:=OUT_NUMMER;
MENSAJE.Caption:='';
MENSAJE.Caption:=DESCRIP;
RETURNCODE.Text:=RETCOD;
Memo1.Text:=WS_pasadatos;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if  ListBox1.ItemIndex=0 then
    begin
    formato.CAPTION:='AAAA-MM-DD';
    VALIDAR.Caption:='Validar';
end;
if  ListBox1.ItemIndex=1 then
    begin
    formato.CAPTION:='HH:MM:SS';
    VALIDAR.Caption:='Validar';
end;
if  ListBox1.ItemIndex=2 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000';
    VALIDAR.Caption:='Validar';
end;
if  ListBox1.ItemIndex=3 then
    begin
    formato.CAPTION:='AAAA-MM-DDNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=4 then
    begin
    formato.CAPTION:='AAAA-MM-DDNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=5 then
    begin
    formato.CAPTION:='AAAA-MM-DDNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=6 then
    begin
    formato.CAPTION:='HH:MM:SSNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=7 then
    begin
    formato.CAPTION:='HH:MM:SSNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=8 then
    begin
    formato.CAPTION:='HH:MM:SSNNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=9 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=10 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=11 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=12 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=13 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=14 then
    begin
    formato.CAPTION:='0000-00-00-00.00.00.000000NNNNNN';
    VALIDAR.Caption:='Sumar';
end;
if  ListBox1.ItemIndex=15 then
    begin
    formato.CAPTION:='AAAA-MM-DDAAAA-MM-DD';
    VALIDAR.Caption:='Calcular';
end;
if  ListBox1.ItemIndex=16 then
    begin
    formato.CAPTION:='HH:MM:SSHH:MM:SS';
    VALIDAR.Caption:='Calcular';
end;
end;
procedure TForm1.limpiarClick(Sender: TObject);
begin
EDIT1.Text:='';
ODATE.Text:='';
OTIME.Text:='';
OSTAMP.Text:='';
OUTNUM.Text:='';
MENSAJE.Caption:='';
RETURNCODE.Text:='';
end;
end.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
11.02.2010, 14:43  [ТС]
Работает!!! Заменил

Delphi
1
2
3
4
 
for idx:= 1 to 80 do begin
    DESCRIP[idx]:='*';
end;
на

Delphi
1
2
3
 
DESCRIP:='                                        '+
           '                                        ';
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
11.03.2010, 21:02  [ТС]
Блин, сейчас пересматривал тут всё, вижу казус, написал совсем не то... О_о

Кодировка COBOL-a не ASCII а ANSI (в MicroFocus - ANSI85, в Fujitsu - ASCII)
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
11.03.2010, 22:54
Ясно. Тогда нужно делать преобразования между кодировками по мере надобности.
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
uses
  Windows;
 
//Функция берёт строку в ANSI кодировке (Windows)
//и возвращает её перевод в OEM кодировку (DOS) в виде отдельной строки.
function StrAnsiToOem(aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    CharToOem(PChar(aStr), PChar(Result));
  end;
end;
 
//Функция берёт строку в OEM кодировке (DOS)
//и возвращает её перевод в ANSI кодировку (Windows) в виде отдельной строки.
function StrOemToAnsi(aStr : String) : String;
begin
  Result := '';
  if Length(aStr) > 0 then begin
    SetLength(Result, Length(aStr));
    OemToChar(PChar(aStr), PChar(Result));
  end;
end;
Текст, набранный в редакторе Delphi, соответствует ANSI кодировке.
Т. е. перед передачей строки в COBOL программу необходимо преобразовывать её через StrAnsiToOem(). А после возврата строки из COBOL программы - выполнять StrOemToAnsi().
---
Если работа идёт в Delphi 2009 или 2010, тогда следует иметь в виду, что там тип String обозначает WideString:
type String = type WideString;
Т. е. требуется соответствующая правка кода.
Для Delphi 7:
type String = type AnsiString;
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
12.03.2010, 13:47  [ТС]
Спасибо Mawrat, у меня сейчас установлен Delphi7, и до сих пор всё над чем я (скорее мы) потели работает супер!
Отдельное спасибо за функции преобразовния!
Тут единственное что мне не понятно - если редактор Delphi7 тоже ANSI, почему COBOL редактор не воспринемает кириллицу?...
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.03.2010, 14:50
А COBOL редактор - это Windows приложение? Если это DOS приложение, тогда перед его запуском надо переключаться на кодовую страницу CP866. Для этого можно, например, приспособить командный файл:
XML
1
2
3
4
rem Переключение на кодовую страницу CP866.
CHCP 866
rem Запуск редактора COBOL.
COBOL.exe
Я не знаю как исполняемый файл редактора назван, поэтому, для примера, я его просто COBOL.exe обозначил.
Если редактор COBOL это Windows приложение, тогда надо разбираться...
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
12.03.2010, 15:17  [ТС]
Существует уйма COBOL компиляторов под DOS, но эти консоли не для меня, мне и MVS консоли на мэинфрэйме хватит, на работе... О_о
Я использую 2 COBOL компилятора, оба под Windows - MicroFocus NetExpress который я использую для чисто кобол программирования, и Fujitsu PowerCOBOL V9.0 который имеет встроенную систему Windows Forms/Common controls (единственный недостаток - надо инсталлировать run-time, он не включает в себя библиотеки)... В случае с MicroFocus кириллица видна в виде вопросительных знаков, может и можно поставить инструкцию в компиляторе для того что бы в консоли скомпилорованной программы была отображена кириллица, но в самом редакторе текст на кириллице не виден... В случае с Fujitsu дело лучше - можно поставить опцию кодировки ASCII и UCS2. Выбрав UCS2 кириллица отображается в кнопках, EditField, StaticText и т.д. но в самом редакторе всё равно видна в виде вопросительных знаков...
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.03.2010, 16:04
Это означает, что те редакторы используют шрифт, в котором не заданы соответствия для кодов, выходящих за пределы ASCII диапазона. Надо попробовать в настройках редактора выбрать другой шрифт. - Желательно какой-нибудь "стандартный" виндовый c фиксированной шириной символов - например, Courier New. Хорошо бы ещё узнать какая локаль используется в редакторе в данный момент.
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
12.03.2010, 16:16  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
Это означает, что те редакторы используют шрифт, в котором не заданы соответствия для кодов, выходящих за пределы ASCII диапазона. Надо попробовать в настройках редактора выбрать другой шрифт. - Желательно какой-нибудь "стандартный" виндовый c фиксированной шириной символов - например, Courier New. Хорошо бы ещё узнать какая локаль используется в редакторе в данный момент.
Что касается шрифта - он у меня всгеда такой, либо Courier New либо Lucida Console.
В MicroFocus нашёл такое (вложения)...
Миниатюры
Передача структуры данных в DLL (stdcall)   Передача структуры данных в DLL (stdcall)   Передача структуры данных в DLL (stdcall)  

0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.03.2010, 19:18
Тогда нужно разбираться с локалью. Именно локаль определяет какой вариант кодовой страницы будет загружен. Т. е., например, номер кодовой страницы может быть один - CP1251, а наборы символов могут использоваться разные - кириллица, белорусский язык, украинский и пр. - Это зависит от кода локали. Для российского региона и русского языка в Windows код локали = 0x419. Судя по скриншотам, в Cobol, видимо действует собственная таблица локализации. И в ней я что-то не вижу кода России... Надо покопать этот вопрос - о локали в COBOL редакторе...
1
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
13.03.2010, 13:44  [ТС]
Понятно, постараюсь покапать, ещё спрошу у людей, может кто знает... Как что - напишу!
Спасибо Mawrat!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2010, 13:44

Передача дополнительного аргумента в функцию stdcall/cdecl?
Всем доброго дня! Есть функция func вида: __stdcall void func() { cout<<"func"<<endl; }

Сделать отладочную DLL (изменить cdecl на stdcall) для вызова из VB
Добрый день. А как обнаружить свой адрес при входе в функцию какой-либо DLL-ки ? А по русски говоря: Сохранить регистр EIP. У...

Передача структуры в dll валит ЕХЕ файл.
Имеется структура в VB Type ST Field1 As String Field2 As Long Field3 As String Field4 As String End Type ...

Передача данных в dll
Есть .dll: library dll; uses Windows, WinInet, SysUtils, TlHelp32, UrlMon, Dialogs; var text : string; {$R *.res}

Формирование и передача структуры данных!
Здравствуйте! Пишу сам себе курсовую работу!ASP.NET MVC. Сайт. Столкнулся с такой ситуацией. На вход формы приходит список из...


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru