Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/22: Рейтинг темы: голосов - 22, средняя оценка - 4.95
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3

Перевод кода Delphi

24.04.2015, 15:27. Показов 4660. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!!

Ребята помогите, пожалуйста, с переводом кода с Delphi на С++ Builder. Хоть на форуме уже не 1 год, просто никогда не приходилось переводить с делфи, а в основном старался избегать этого и решить другим способом, но это другой случай. Прошу сильно не пинать, но критику выслушаю!!! Вот код, который я частично переделал, но в других участках кода я не совсем понимаю, куда что вставлять.

Есть 2 юнита. 1 юнит (Unit1.cpp) я создал автоматом при создании проекта в котором есть форма, а на форме Memo и 2 второй юнит (NLMEvents.cpp), который, необходимо соедеинить с Unit1.cpp и заносить данные в Memo.


Код на Delphi
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
unit NLMEvents;
 
interface
 
function StartNLMEventListener: HResult;
function StopNLMEventListener: HResult;
 
implementation
 
uses
  Windows, ActiveX, NETWORKLIST_TLB, SysUtils, Unit1;
 
type
  TMyNetworkEvents = class(TInterfacedObject, INetworkEvents, INetworkConnectionEvents, INetworkListManagerEvents)
  public
    function NetworkAdded(networkId: TGUID): HResult; stdcall;
    function NetworkConnectivityChanged(networkId: TGUID; NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
    function NetworkDeleted(networkId: TGUID): HResult; stdcall;
    function NetworkPropertyChanged(networkId: TGUID; fFlags: NLM_NETWORK_PROPERTY_CHANGE): HResult; stdcall;
    function ConnectivityChanged(NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
    function NetworkConnectionConnectivityChanged(networkId: TGUID; NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
    function NetworkConnectionPropertyChanged(networkId: TGUID; fFlags: NLM_NETWORK_PROPERTY_CHANGE): HResult; stdcall;
  end;
 
var
  pNLM: INetworkListManager = nil;
  dwCookie1: LongInt = -1;
  dwCookie2: LongInt = -1;
  dwCookie3: LongInt = -1;
 
const
  IID_IConnectionPointContainer: TGUID = '{B196B284-BAB4-101A-B69C-00AA00341D07}';
  //IID_IUnknown: TGUID = '{00000000-0000-0000-C000-000000000046}';
  //CLSID_NetworkListManager: TGUID = '{DCB00C01-570F-4A9B-8D69-199FDBA5723B}';
 
function TMyNetworkEvents.ConnectivityChanged(NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('ConnectivityChanged');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkConnectionConnectivityChanged(networkId: TGUID; NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkConnectionConnectivityChanged');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkConnectionPropertyChanged(networkId: TGUID; fFlags: NLM_NETWORK_PROPERTY_CHANGE): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkConnectionPropertyChange');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkAdded(networkId: TGUID): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkAdded');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkConnectivityChanged(networkId: TGUID; NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkConnectivityChanged');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkDeleted(networkId: TGUID): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkDeleted');
  Result := S_OK;
end;
 
function TMyNetworkEvents.NetworkPropertyChanged(networkId: TGUID; fFlags: NLM_NETWORK_PROPERTY_CHANGE): HResult; stdcall;
begin
  Form2.Memo1.Lines.Add('NetworkPropertyChanged');
  Result := S_OK;
end;
 
function StartNLMEventListener: HResult;
var
  pCpc: IConnectionPointContainer;
  pConnectionPoint: IConnectionPoint;
  pSink: INetworkEvents;
begin
  if pNLM = nil then
  begin
    Result := CoCreateInstance(CLASS_NetworkListManager, nil, CLSCTX_ALL, IID_INetworkListManager, pNLM);
    if Failed(Result) then
      Exit;
  end else
  begin
    Result := S_OK;
  end;
 
  if Succeeded(pNLM.QueryInterface(IID_IConnectionPointContainer, pCpc)) then
  begin
    pSink := TMyNetworkEvents.Create as INetworkEvents;
 
    if dwCookie1 = -1 then
    begin
      if Succeeded(pCpc.FindConnectionPoint(IID_INetworkEvents, pConnectionPoint)) then
      begin
        pConnectionPoint.Advise(pSink, dwCookie1);
        pConnectionPoint := nil;
      end;
    end;
 
    if dwCookie2 = -1 then
    begin
      if Succeeded(pCpc.FindConnectionPoint(IID_INetworkConnectionEvents, pConnectionPoint)) then
      begin
        pConnectionPoint.Advise(pSink, dwCookie2);
        pConnectionPoint := nil;
      end;
    end;
 
    if dwCookie3 = -1 then
    begin
      if Succeeded(pCpc.FindConnectionPoint(IID_INetworkListManagerEvents, pConnectionPoint)) then
      begin
        pConnectionPoint.Advise(pSink, dwCookie3);
        pConnectionPoint := nil;
      end;
    end;
  end;
end;
 
function StopNLMEventListener: HResult;
var
  pCpc: IConnectionPointContainer;
  pConnectionPoint: IConnectionPoint;
begin
  if pNLM <> nil then
  begin
    if Succeeded(pNLM.QueryInterface(IID_IConnectionPointContainer, pCpc)) then
    begin
      if dwCookie1 <> -1 then
      begin
        if Succeeded(pCpc.FindConnectionPoint(IID_INetworkEvents, pConnectionPoint)) then
        begin
          pConnectionPoint.Unadvise(dwCookie1);
          pConnectionPoint := nil;
        end;
      end;
 
      if dwCookie2 <> -1 then
      begin
        if Succeeded(pCpc.FindConnectionPoint(IID_INetworkConnectionEvents, pConnectionPoint)) then
        begin
          pConnectionPoint.Unadvise(dwCookie2);
          pConnectionPoint := nil;
        end;
      end;
 
      if dwCookie3 <> -1 then
      begin
        if Succeeded(pCpc.FindConnectionPoint(IID_INetworkListManagerEvents, pConnectionPoint)) then
        begin
          pConnectionPoint.Unadvise(dwCookie3);
          pConnectionPoint := nil;
        end;
      end;
    end;
 
    pNLM := nil;
  end;
 
  dwCookie1 := -1;
  dwCookie2 := -1;
  dwCookie3 := -1;
 
  Result := S_OK;
end;
 
end.
Вот код на С++ Builder, который я частично переделал

NLMEvents.h
C++
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
#ifndef NLMEventsH
#define NLMEventsH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <ComCtrls.hpp>
#include <SysUtils.hpp>  // здесь надо добавить наверно ещё  Windows, ActiveX, NETWORKLIST_TLBж
 
class TMyNetworkEvents : public System::TInterfacedObject  // а как  сюда вставить TInterfacedObject, INetworkEvents, INetworkConnectionEvents, INetworkListManagerEvents
{
public:
    HResult _stdcall ConnectivityChanged(NLM_CONNECTIVITY NewConnectivity);
    HResult _stdcall NetworkConnectionPropertyChanged(TGUID networkId, NLM_NETWORK_PROPERTY_CHANGE fFlags);
    HResult _stdcall NetworkAdded(TGUID networkId);
    HResult _stdcall NetworkConnectivityChanged(TGUID networkId, NLM_CONNECTIVITY NewConnectivity);
    HResult _stdcall NetworkDeleted(TGUID networkId);
    HResult _stdcall NetworkPropertyChanged(TGUID networkId, NLM_NETWORK_PROPERTY_CHANGE fFlags);
    HResult StartNLMEventListener;
    HResult StopNLMEventListener;
};
 
/*
var
  pNLM: INetworkListManager = nil;
  dwCookie1: LongInt = -1;
  dwCookie2: LongInt = -1;
  dwCookie3: LongInt = -1;                                                            ВОТ ЭТО ВСЁ ЗАКОМЕНТИРОВАННОЕ ВООБЩЕ НЕ ЗНАЮ КУДА ЛУЧШЕ ВСТАВЛЯТЬ
 
const
  IID_IConnectionPointContainer: TGUID = '{B196B284-BAB4-101A-B69C-00AA00341D07}';
 */
#endif
а вот NLMEvents.срр
C++
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
#include <vcl.h>
#include <windows.h>
#include <Netlistmgr.h>
 
#pragma hdrstop
#include "NLMEvents.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
 
 
HResult _stdcall TMyNetworkEvents::ConnectivityChanged(NLM_CONNECTIVITY NewConnectivity)
{
  Form1->Memo1->Lines->Add("ConnectivityChanged");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkConnectionConnectivityChanged(TGUID networkId, NLM_CONNECTIVITY NewConnectivity)
{
  Form1->Memo1->Lines->Add("NetworkConnectionConnectivityChanged");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkConnectionPropertyChanged(TGUID networkId, NLM_NETWORK_PROPERTY_CHANGE fFlags)
{
  Form1->Memo1->Lines->Add("NetworkConnectionPropertyChange");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkAdded(TGUID networkId)
{
  Form1->Memo1->Lines->Add("NetworkAdded");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkConnectivityChanged(TGUID networkId, NLM_CONNECTIVITY NewConnectivity)
{
  Form1->Memo1->Lines->Add("NetworkConnectivityChanged");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkDeleted(TGUID networkId)
{
  Form1->Memo1->Lines->Add("NetworkDeleted");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult _stdcall TMyNetworkEvents::NetworkPropertyChanged(TGUID networkId, NLM_NETWORK_PROPERTY_CHANGE fFlags)
{
  Form1->Memo1->Lines->Add("NetworkPropertyChanged");
  return S_OK;
}
//-----------------------------------------------------------------------------
HResult StartNLMEventListener()
{
  IConnectionPointContainer *pCpc;
  IConnectionPoint *pConnectionPoint;
  INetworkEvents *pSink;
 
  if (pNLM == NULL)
  {
    if (FAILED(CoCreateInstance(CLSID_NetworkListManager, NULL, CLSCTX_ALL, IID_INetworkListManager, (void**) &pNLM)))
      {
       return 0;
      }
   else if
      {
      return S_OK;
      }
 
  if (SUCCEEDED(pNLM->QueryInterface(IID_IConnectionPointContainer, pCpc))
    {
    pSink = TMyNetworkEvents *INetworkEvents;
 
    if (dwCookie1 == -1)
    {
      if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkEvents, pConnectionPoint))
       {
        pConnectionPoint->Advise(pSink, dwCookie1);
        pConnectionPoint = NULL;
       }
     }
 
    if (dwCookie2 == -1)
    {
      if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkEvents, pConnectionPoint))
       {
        pConnectionPoint->Advise(pSink, dwCookie2);
        pConnectionPoint = NULL;
       }
     }
 
    if (dwCookie3 == -1)
    {
      if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkEvents, pConnectionPoint))
       {
        pConnectionPoint->Advise(pSink, dwCookie3);
        pConnectionPoint = NULL;
       }
     }
  }
 }
 
//-----------------------------------------------------------------------------
HResult StopNLMEventListener()
{
 IConnectionPointContainer *pCpc;
 IConnectionPoint *pConnectionPoint;
 
  if (pNLM != NULL)
  {
    if (SUCCEEDED(pNLM->QueryInterface(IID_IConnectionPointContainer, pCpc))
    {
      if (dwCookie1 != -1)
      {
        if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkEvents, pConnectionPoint))
        {
          pConnectionPoint->Unadvise(dwCookie1);
          pConnectionPoint = NULL;
        }
      }
 
      if (dwCookie2 != -1)
      {
        if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkConnectionEvents, pConnectionPoint))
        {
          pConnectionPoint->Unadvise(dwCookie2);
          pConnectionPoint = NULL;
        }
      }
 
      if (dwCookie3 != -1)
      {
        if (SUCCEEDED(pCpc->FindConnectionPoint(IID_INetworkListManagerEvents, pConnectionPoint))
        {
          pConnectionPoint->Unadvise(dwCookie3);
          pConnectionPoint = NULL;
        }
      }
    }
 
    pNLM = NULL;
  }
 
  dwCookie1 = -1;
  dwCookie2 = -1;
  dwCookie3 = -1;
 
  return S_OK;
 }
}

Unit1.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "NLMEvents.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
Заранее благодарен за ответ
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2015, 15:27
Ответы с готовыми решениями:

Перевод кода из Delphi на C++
Доброго вечера. Пожалуйста, помогите портировать код с Delphi на C++. Его не очень много, но есть некоторые компоненты, которых не могу...

Перевод кода с Delphi на С++
Доброго времени суток:) У меня возникла проблема с редиректом в synapse(про indy не говорите,я знаю,что там есть HandleRedirects) Вот...

Перевод кода из Delphi в C++
unit UDAL; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,...

53
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 09:35  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от volvo Посмотреть сообщение
Просто показывай информацию "Приложение запущено", например, при старте... Будут изменения - тогда будет о чем говорить.
Жалко, что не получается при старте программы нельзя определить, что происходит в данный ммоент с сетью, а то я хотел в зависимости от состояния сети изменять иконку в трее.

Добавлено через 12 часов 3 минуты
Цитата Сообщение от volvo Посмотреть сообщение
выслать форме SendMessage
Пытаюсь сделать вот так
Pascal
1
2
3
4
5
6
7
function TMyNetworkEvents.ConnectivityChanged(NewConnectivity: NLM_CONNECTIVITY): HResult; stdcall;
begin
  msg_first :='ConnectivityChanged';
  SendMessage(Form1.Handle, WM_GETTEXT, 100, (LPARAM)msg_first);
  ShowConnMessage(NewConnectivity);
  Result := S_OK;
end;
Но при компиляции выдаёт ошибку, может Handle формы необходимо найти через FindWindow?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 09:43
Handle формы передается в pas-код точно так же, как я тебе показывал с Memo. То есть:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
interface
 
uses StdCtrls, Windows;
 
function StartNLMEventListener: HResult;
function StopNLMEventListener: HResult;
 
var
  FormHandle : HWND;
  msg_first : String;
  msg_second : String;
 
implementation
// ...
C++
1
2
3
4
5
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Nlmevents::FormHandle = this->Handle;
    StartNLMEventListener();
    // ...
, дальше все действия в дельфийском файле производятся через FormHandle...
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 12:37  [ТС]
ругается на FormHandle : HWND;

[DCC Error] NLMEvents.pas(13): E2003 Undeclared identifier: 'HWND'

Добавлено через 9 минут
У меня сейчас в одном из событий вот так вот
Pascal
1
2
* msg_first :='ConnectivityChanged';
* SendMessage(FormHandle, WM_GETTEXT, 100, (LPARAM)msg_first);
Но тут наверно вместо WM_GETTEXT, какой-то другой параметр должен быть.....

Добавлено через 1 час 40 минут
Цитата Сообщение от Sasha Посмотреть сообщение
ругается на FormHandle : HWND;
[DCC Error] NLMEvents.pas(13): E2003 Undeclared identifier: 'HWND'
эту ошибку исправил, осталось разобраться с параметром
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 13:28
Pas
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
var
  FormHandle: HWND;
  msg_first: String;
  msg_second: String;
 
implementation
 
uses
  ActiveX, NETWORKLIST_TLB, SysUtils, Messages;
 
const
  MSG_CONN_CHANGED = WM_USER + 1000;
 
// ...
 
function TMyNetworkEvents.ConnectivityChanged(NewConnectivity: NLM_CONNECTIVITY)
  : HResult; stdcall;
begin
  msg_first := 'ConnectivityChanged';
  SendMessage(FormHandle, MSG_CONN_CHANGED, 0, 0);
 
  ShowConnMessage(NewConnectivity);
  Result := S_OK;
end;
, и из CPP-кода ловишь то же самое сообщение WM_USER+1000, и по его прибытию показываешь Balloon.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 13:58  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
ловишь то же самое сообщение WM_USER+1000
Я так понял, что под это тоже карту нужно делать?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 13:59
Просто добавь еще один обработчик в уже существующую карту.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 14:57  [ТС]
Вот так вот?
C++
1
2
3
4
 BEGIN_MESSAGE_MAP
       MESSAGE_HANDLER(WM_TRAYNOTIFY,TMessage,WMTrayNotify)
       MESSAGE_HANDLER(MSG_CONN_CHANGED,TMessage,MSG_CONN_CHANGED)
     END_MESSAGE_MAP(TForm)
Добавлено через 31 минуту

Не по теме:

Голяк полнейший, вообще ничё не получается

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 15:00
C++
1
2
3
4
5
6
    MESSAGE void __fastcall MsgConnChanged(TMessage &message);
 
    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_TRAYNOTIFY,TMessage,WMTrayNotify)
        MESSAGE_HANDLER(MSG_CONN_CHANGED, TMessage, MsgConnChanged)
    END_MESSAGE_MAP(TForm)
Вот так... Все нормально работает.
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 15:48  [ТС]
странно у меня почему-то не находит

[bcc32 Error] Unit1.h(57): E2451 Undefined symbol 'MSG_CONN_CHANGED'

Добавлено через 5 минут
В Pas-файле вот так вот
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
unit NLMEvents;
 
interface
 
 
uses StdCtrls,Windows;
 
function StartNLMEventListener: HResult;
function StopNLMEventListener: HResult;
 
var
//Memo : TMemo;
FormHandle : HWND;
msg_first : String;
msg_second : String;
 
implementation
 
uses
 ActiveX, NETWORKLIST_TLB, SysUtils, Messages;
const
  MSG_CONN_CHANGED = WM_USER + 1000;
 
type
Добавлено через 16 минут
volvo, может MSG_CONN_CHANGED где-то надо прописать ещё в Unit1 глобально?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 15:52
C++
1
#define MSG_CONN_CHANGED (WM_USER + 1000)
в начале h-файла
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
22.06.2015, 16:27  [ТС]
volvo, пытаюсь описать функцию MESSAGE void __fastcall MsgConnChanged(TMessage &message);

И для примера делаю таким образом
C++
1
2
3
4
5
6
7
8
9
10
MESSAGE void __fastcall TForm1::MsgConnChanged(TMessage &message)
 {
     switch (message.Result)
     case 0:
     {
         ShowMessage("12");
     }
 
 
 }
И действительно ShowMessage появляется при вытягивании кабеля и обратной вставки в сетевую карту, а как теперь правильно додумать с переменными которые передают текст? Это наверно нужно сделать так как ты показывал в FormCreate?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
22.06.2015, 16:44
Я уже тебе неоднократно показывал, ГДЕ именно надо менять эти строковые переменные. В методах класса TMyNetworkEvents. Во ВСЕХ методах. Изменил строки (в соответствии с тем, что именно произошло), выслал MSG_CONN_CHANGED, чтобы форма отобразила баллун. Что сложного?

И реализуй, наконец, уже показ balloon-а по прибытию сообщения. На кой ты теперь будешь еще ShowMessage тянуть?
C++
1
2
3
4
void __fastcall TForm1::MsgConnChanged(TMessage &message)
{
    ShowBalloon(Nlmevents::msg_second, Nlmevents::msg_first /* , NIF_INFO */);
}
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.06.2015, 17:12  [ТС]
volvo, целый день сегодня пытался понять, из-за чего через раз, а то и каждый раз, после того как я вставляю кабель в сетевую карту приложение всё равно пишет NetworkDeleted и внизу network disconnected, пришёл к выводу, что скорее всего причина в IID_IConnectionPointContainer: TGUID = '{B196B284-BAB4-101A-B69C-00AA00341D07}';, потому как очень часто подтягивается вот это событие
Pascal
1
2
3
4
5
6
unction TMyNetworkEvents.NetworkDeleted(networkId: TGUID): HResult; stdcall;
begin
  msg_first :='NetworkDeleted';
  SendMessage(FormHandle, MSG_CONN_CHANGED, 0, 0);
  Result := S_OK;
end;
описанное в pas-файле
может в этом приложении необходимо взять TGUID другой?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.07.2015, 12:32  [ТС]
Вот выкладываю скриншот
Миниатюры
Перевод кода Delphi  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.07.2015, 12:32
Помогаю со студенческими работами здесь

Перевод кода из Delphi в C++
Помогите друзья! это код Делфи.Переделать это на С++WITH OpenDialog1 Do If Executе Then begin Memo1.Visible:=True; { видимость...

Перевод кода из Delphi в C++
Ребята надо перевести код из Delphi в С++.procedure TF2_DAL.RaschetClick(Sender: TObject); var mas: array of Integer; i: integer; ...

Перевод кода из Delphi в C++
unit pr1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, RXClock,...

Перевод кода с Delphi на C++ Builder
Помогите перевести данный код (экспорт данных из ADOTable в Excel) с Delphi на C++ Builder. var XLApp,Sheet,Colum:Variant; ...

Перевод кода из Delphi 7 в C++ Builder 6
Подскажите, пожалуйста, как можно перевести код: TMemo(FindComponent('Memo' + IntToStr(i))).Lines.LoadFromFile(GetCurrentDir + '\db\' +...


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

Или воспользуйтесь поиском по форуму:
54
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru