powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фрагмент кода перенести
5 сообщений из 5, страница 1 из 1
Фрагмент кода перенести
    #39666105
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Помогите, пожалуйста, с переводом кода на Delphi
такой вот фрагмент на VFP

lcStringToSend=Strconv(lcstr + Chr(0), 5)
lnPtrStringToSend = WinAPI_HeapAlloc(WinAPI_GetProcessHeap(), 0, Lenc(lcStringToSend))
Sys(2600, lnPtrStringToSend,Lenc(lcStringToSend), lcStringToSend) && Copy value to memory
Local lcCOPYDATASTRUCT As String
lcCOPYDATASTRUCT = ;
BINTOC(ID_DATA, "4RS") ; && ULONG_PTR dwData
+ BinToC(Lenc(lcStringToSend), "4RS") ; && DWORD cbData
+ BinToC(lnPtrStringToSend, "4RS") && PVOID lpData
...
Рейтинг: 0 / 0
Фрагмент кода перенести
    #39666289
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дельфи не знаю, подписал комментарии что каждая строка делает
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
lcStringToSend=Strconv(lcstr + Chr(0), 5) && перевод lcstr в юникод (UTF-16)
lnPtrStringToSend = WinAPI_HeapAlloc(WinAPI_GetProcessHeap(), 0, Lenc(lcStringToSend)) && Выделение памяти 
Sys(2600, lnPtrStringToSend,Lenc(lcStringToSend), lcStringToSend) && Копирование lcStringToSend в lnPtrStringToSend 
Local lcCOPYDATASTRUCT As String
lcCOPYDATASTRUCT = ; && заполнение структуры из 3-х полей 
                BINTOC(ID_DATA, "4RS") ;                                  && ULONG_PTR dwData
+ BinToC(Lenc(lcStringToSend), "4RS") ;                              && DWORD cbData
+ BinToC(lnPtrStringToSend, "4RS")                                      && PVOID lpData
...
Рейтинг: 0 / 0
Фрагмент кода перенести
    #39666324
patrick1968
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за комментарий, я примерно представляю, что каждый оператор делает, но вот со структурами проблемно, хотелось бы точнее понять
...
Рейтинг: 0 / 0
Фрагмент кода перенести
    #39666327
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В фоксе нет структур, поэтому приходится извращаться через строки.
Это запись три целых числа по 4 байта, т.е. просто 12-байтная последовательность
Код: plaintext
1.
2.
3.
4.
lcCOPYDATASTRUCT = ; && заполнение структуры из 3-х полей 
                BINTOC(ID_DATA, "4RS") ;                                  && ULONG_PTR dwData
+ BinToC(Lenc(lcStringToSend), "4RS") ;                              && DWORD cbData
+ BinToC(lnPtrStringToSend, "4RS")                                      && PVOID lpData


на С++ будет примерно так выглядеть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
struct my_struct {
   ULONG_PTR dwData;
   DWORD cbData;
   PVOID lpData;
}
...

my_struct ms;
ms.dwData = ID_DATA;
ms.cbData = Lenc(lcStringToSend);
ms.lpData = lnPtrStringToSend;
...
Рейтинг: 0 / 0
Фрагмент кода перенести
    #39666329
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T[/src]
на С++ будет примерно так выглядеть
Код: plaintext
1.
2.
3.
4.
5.
6.
struct my_struct {
   ULONG_PTR dwData;
   DWORD cbData;
   PVOID lpData;
}
...

А на Pascal и его производных
Код: pascal
1.
Record ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Фрагмент кода перенести
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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