Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: V0lt
Дата сообщения: 07.07.2010 19:41
mrherbrooks

Цитата:
msdn. уж с этим там все гуд.

ну из описании функции есть одна ссылка на пример в комментариях . но то что я там увидел мне не понравилось. меня вообще весь этот изврат со строками в с/с++ начинает утомлять


Цитата:
вот еще вариант.

это наверное лучший
Автор: ruslan666815
Дата сообщения: 15.07.2010 09:20
есть класс

Код: public ref class Form2 : public System:: Windows:: Forms:: Form
{

public:

System:: String^ s;
public:    Form2(void)
{
InitializeComponent();

//
//TODO: Add the constructor code here
//
}
};
Автор: Omicron_Persey_8
Дата сообщения: 16.07.2010 14:46
ruslan666815
С представленным все нормально, компилируется без ошибок. Может это поможет.
Автор: Red Planet
Дата сообщения: 27.07.2010 11:23

Цитата:
Как наиболее рационально решить нехитрую задачу: перевести язык своей программы, состоящей из формы и размещенных на ней элементов, скажем, на английский или на любой другой



Цитата:
если все и сразу - посмотрите в сторону TsiLang Components Suite


Установил TsiLang Components Suite 6.5, Dictionary Manager, научился делать перевод вручную (поместить на форму компонент TsiLang, выставить NumOfLanguages равным двум или более, сделать двойной клик по компоненту TsiLang и руками вбивать переводы на каждый Caption).

Как пользоваться словарем? Хотелось бы сделать так, чтобы оно само искало в словаре переводы, а не я каждый раз переводил одно и то же. Скажем, зачем писать вручную из раза в раз, что "About" означает "О программе" или "Save" значит "Сохранить", если эти переводы забиты в словарь default.dic, установленный вместе с Dictionary Manager.
Автор: conty9
Дата сообщения: 05.08.2010 09:10
Немного не в тему - просьба к знатокам языка. Нужен "стартер" для программ. Т.е., нужна обычная ЕХЕ-шка, являющаяся аналогом команды Start, которая в качестве переменной принимает имя реально запускаемой программы с ключами и стартует её так:
стартер.ехе программа.(ехе/bat/cmd/au3/...) -ключи
Нужна для работы в среде WinPE, с минимальным размером в виде готового продукта (ЕХЕ).
Автор: mrherbrooks
Дата сообщения: 05.08.2010 09:23
conty9
дык, а в чем проблема. в main() передаются аргументы, их и надо проанализировать.
Автор: conty9
Дата сообщения: 05.08.2010 10:41
mrherbrooks, знал бы я программирование - проблем бы не было. Но увы и ах - я далёк от программирования, мне бы готовую ЕХЕ-шку.
Автор: mrherbrooks
Дата сообщения: 05.08.2010 15:44
готовую не получится, ибо:
1. Надо знать ОС
2. Какие ключи, их функционал
Автор: conty9
Дата сообщения: 05.08.2010 16:17
mrherbrooks, спасибо, уже не нужно, нашёл.
http://tools.oszone.net/Vadikan/temp/hidcon.exe
Автор: karakurt2
Дата сообщения: 12.08.2010 13:21
помогите написать разбор строки с использованием boost::spirit со следующей грамматикой:

<command> := <mnemonics>[<space>*<value>]
<mnemonics> := "p" | "P" | "t" | "T" | "g" | "Z" | "q" | "Q" | "E" | "e" | "a" | "A" | "n" | "N"
<space> := " " | "\t"
<value> := <number> | <quoted-string>
<number> := floating-point number
<quated_string> := """ <ascii> """

на выходе после применения процедуры разбора должен быть список команд


Код:
struct Command
{
    enum Type
    {
        OUTPUT,
        NUMBER,
        STRING
    };
    char kind;
    Type type;
    double number;
    std::string text;
};

typedef std::list<Command> Command_list;
Автор: V0lt
Дата сообщения: 17.08.2010 20:37
тупой вопрос:
Если менять порядок байтов с big-endian на little-endian, то ведь неважно число со знаком или без?

Код: SHORT x = ...;
x = (x>>8) | (x<<8);
Автор: Abs62
Дата сообщения: 17.08.2010 21:08
V0lt

Цитата:

Код: x = (x>>8) | (x<<8);
Автор: V0lt
Дата сообщения: 17.08.2010 21:18
Abs62
А как будет правильно для преобразования знаковых 16-битных чисел?
Автор: Abs62
Дата сообщения: 17.08.2010 21:29
V0lt
Привести к беззнаковым при преобразовании.

Код: х = ((unsigned short)x>>8) | (x<<8);
Автор: knkd
Дата сообщения: 17.08.2010 23:21
А как работает std::string.substr() ?

Я пытаюсь:


Код:
std::string key = " 0123456789 "
str::string strip_key = key.substr(2, 11);
Автор: V0lt
Дата сообщения: 18.08.2010 16:57
Abs62
спасибо, работает
еще нашел вот такую конструкцию

Код: x = (x & 0x00ff) << 8 | (x & 0xff00) >> 8;
Автор: KF121
Дата сообщения: 18.08.2010 18:47
x = *(USHORT *)m;
Автор: V0lt
Дата сообщения: 18.08.2010 19:30
KF121

Цитата:
x = *(USHORT *)m;

Это считывает два первых байта, а у меня массив большой. Как например считать два произвольных последовательных байта?

... сделал так:

Код: BYTE* m = ...;
USHORT* m2 = (USHORT*)m;
USHORT x = m2[n];
Автор: KF121
Дата сообщения: 18.08.2010 19:50
произвольный кусок x = *(USHORT *)(m + i*2); где i номер блока

да правильно понимаешь
Автор: V0lt
Дата сообщения: 19.08.2010 19:08
Ну и последние два вопроса на этой неделе

1. Есть массивы float* m1 и float* m2 одинаковой длины n. Как быстрее всего скопировать данные из m1 в m2? Вроде функция должна быть для копирования блока памяти.

2. Как поменять байты местами в переменной типа float?
Автор: ValidolX
Дата сообщения: 19.08.2010 19:35
V0lt

1)
memcpy(from, to, size_bytes)

2) float a;
через кастинг например, еще можно через union
char * b = (char*)a;
*b = 1;
*(b+1) = 2;
....

а зачем в флоате менять местами байты ??
Автор: V0lt
Дата сообщения: 19.08.2010 19:47
ValidolX

Цитата:
memcpy(from, to, size_bytes)

спасибо, запомню.


Цитата:
а зачем в флоате менять местами байты ??

Они не правильные. Там не просто менять байты надо, а порядок сменить на обратный.

Задача такая есть массив float* p из него надо считывать элементы, менять в них порядок байтов и укладывать их в массив float* f.

Автор: V0lt
Дата сообщения: 19.08.2010 21:53
сделал так:

Код: float* p = ...;
float* f = ...;
unsigned int* q = (unsigned int*)p;
unsigned int* v = (unsigned int*)f;
for(int i = 0; i < n; i++){
    v[i] = (q[i] << 24) | ((q[i] & 0x0000ff00) << 8) | ((q[i] & 0x00ff0000) >> 8) | (q[i] >> 24);
}
Автор: Dimrix
Дата сообщения: 28.08.2010 19:55
Доброго всем времени суток. Ваяю клиент-серверное приложение, где клиент на ActionScript2.0 а сервер на с++. Задача минимум уже сделана - сервак видит клиента принимает команды и отправляет в ответ. Но пока что это реализовано на примитивном уровне: передача строки с 0ым байтом в конце её. Хочу ж передавать "стурктуированые" данные, т.е. некую структуру. Вопрос состоит прежде всего
1. Можно ли создать "одинаковую"структуру в обоих приложениях и можно ли их передавать от клиента к серверу и обратно или нет?
2. Если есть возможность (1ый вопрос), то как реализвать приём и передачу данных на сервере? Пока что (для строковых данных) делал так: write(fd, answer.c_str(), answer.size()); где fd - ид потока, answer - переменная типа string которая содержит команду+0ой байт на конце.
Автор: ValidolX
Дата сообщения: 28.08.2010 20:50
Dimrix

Цитата:
Можно ли создать "одинаковую"структуру в обоих приложениях

да, так и надо иначе как сервер поймет что пришло? (если речь идет о бинарном протоколе)

так же и обратно можно сделать другую структуру - AnswerPacket
Главное требование - при описании структуры - сказать компилятору чтоб выравнивал данные на байт
иначе будет интересно


Цитата:
как реализвать приём и передачу данных на сервере

методов уйма ++
от ручного дизайна и кодинга всего до использования компонент, фрейморков, сторонних прог


Цитата:
write(fd, answer.c_str(), answer.size());

первая же проблемма - как передать 0 как байт данных?

вобчем описываете передающие команды, один (или больше ) ответов, делаете парсер одного и другого и вперед

насчет сервера - подумайте о много-пользовательости (100 клиентов может быть единовременно?) и т.д.
Удачи
Автор: V0lt
Дата сообщения: 30.08.2010 14:34
Есть переменная double d (8 байт). Нужно
1) создать переменную unsigned long long n (8 байт) и скопировать в нее все байты из d.
2) также создать переменную n, но так чтобы она ссылалась на теже байты что и d.
Подскажите, как это правильно делается. Я уже запутался вконец
Автор: ValidolX
Дата сообщения: 30.08.2010 14:56
V0lt

кастинг поможет отцу русской демоктарии

double d = 0.123;
unsigned long long d2 = *(unsigned long long*)&d;
Автор: KF121
Дата сообщения: 30.08.2010 15:15
либо используй union
union x
{
double d;
unsigned long long d2;
}

x.d = 0.123;
а потом используй x.d2;
Автор: V0lt
Дата сообщения: 30.08.2010 15:20
ValidolX

Цитата:
кастинг поможет отцу русской демоктарии

Это типа на работу программистом меня не возьмут


Цитата:
double d = 0.123;
unsigned long long d2 = *(unsigned long long*)&d;

Сколько операторов . Это присваивание(копирование) значения?
Где об этом почитать? Чтобы и понятно, и на руcском.
Автор: KF121
Дата сообщения: 30.08.2010 15:26
Начни с Кенриган и Ричи. Язык программирования Си. есть на русском языке

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.