powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / HELP!
9 сообщений из 9, страница 1 из 1
HELP!
    #34566622
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте!
Подскажите пожалуйста!
Если я соотворю структурированный тип и передам его по сетки из Linux (прогу на С) клиентской проге Windows(Delphi). То смогу ли преобразовать этот тип обратно к структуре???
По Си:
Подскажите как преобразовать такие типы как char* и int друг в друга ?!
И как преобразовать структурированный тип к char[]?
...
Рейтинг: 0 / 0
HELP!
    #34566931
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПодскажите как преобразовать такие типы как char* и int друг в друга ?!
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
int n;
char *str = "12345.67";

n = atoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
...
Рейтинг: 0 / 0
HELP!
    #34567105
nrmBeginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
HELP!
    #34567225
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Летать пока не умеют, стрелять тоже. Но орлы!(с)
1) Предать структуру можно, есть два способа - правильный и не правильный.Правильный - сериализовать структуру в буффер руками по элементно, передавая каждый тип в сетевом порядке байт. Можно неправильно, ибо с обоих концов скорее всего интел, подгодав выравнивание. Только чтобы с дельфей работало нужно будет dll рисовать
преобразовывать тогда совсем просто:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct A
{
  ...
};

A a;
int buflen = sizeof(A);
void* buf = new char[sizeof(A) + sizeof(buflen)];
memcpy(buf, &buflen,sizeof(buflen));
memcpy(buf + sizeof(buflen), &a, sizeof(A));
Потом передаешь через сокет, а на другой стороне все взад
...
Рейтинг: 0 / 0
HELP!
    #34571346
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 blinded
Какую DLL ? Для чего? что в ней должно быть?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct A
{
  ...
};

A a;
int buflen = sizeof(A);
void* buf = new char[sizeof(A) + sizeof(buflen)];
memcpy(buf, &buflen,sizeof(buflen));
memcpy(buf + sizeof(buflen), &a, sizeof(A));
А может здесь где то не размер "A" , а "а"?
А обратное будет что-то вроде этого:
Код: plaintext
1.
2.
3.
4.
5.
 //тут получаем из сокета 

buflen:=sizeof(A);
CopyMemory(a,buffer+sizeof(buflen),sizeof(buffer)-sizeof(buffer));

где buffer и a указатели.
...
Рейтинг: 0 / 0
HELP!
    #34571860
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс! Опечатался!
Код: plaintext
1.
2.
3.
//тут получаем из сокета
buflen:=sizeof(A);
CopyMemory(a,buffer+sizeof(buflen),sizeof(buffer)-sizeof(buflen));
...
Рейтинг: 0 / 0
HELP!
    #34571939
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-- Можно мне чашечку кофе ?
-- А что тебе знает, можно тебе кофе, нельзя тебе кофе ???
...
Рейтинг: 0 / 0
HELP!
    #34571977
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chikanok wrote:

> Если я соотворю структурированный тип и передам его по сетки из Linux
> (прогу на С) клиентской проге Windows(Delphi). То смогу ли преобразовать
> этот тип обратно к структуре???
Да

> Подскажите как преобразовать такие типы как char* и int друг в друга ?!
atio, itoa, sprintf

> И как преобразовать структурированный тип к char[]?
1) printf, sprintf и аналогичные. Перегоняем в текст, потом парсим.
2) Если в структуре нет указателей, можно её саму скастить в char*, и
передать по сокету...


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
HELP!
    #34572298
chikanok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подводим итоги!
Отправил структуру принял структуру! Всё работает! Это очень радует!
Только под Delphi структуру немного пришлось изменить для совместимости!
Теперь вот какой вопрос:
Как сделать структуру типа вот этой под С и под Delphi:
Код: plaintext
1.
2.
 1 .Количество(длина пункта два)
 2 .Массив структур
На Delphi это будет что-то вроде :
Код: plaintext
1.
2.
3.
4.
 type  Infos= record 
Len:integer;
Ar: array   of  info;
 end ;
Но так будет косяк с преобразованием(Я так думаю) или я не прав?!
А вот ещё какой вопрос :
В делфи есть хорошая штука:
Код: plaintext
1.
2.
3.
4.
5.
6.
 ROT= record 
 id:integer;
 name: string ;
  case  byte  of 
  1 :(x:integer; y:integer;);
  2 :(Home:integer);
  end ;
Тоесть запись с вариантным "куском". А как такое на С замутить???
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / HELP!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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