Вопрос № 55203: Здраствуйте!!!
Поясните пожалуйста, человеческим языком кусок программы из приложения. Тоесть что зачем и как мы делаем в каждой из строк кода!!! ...Вопрос № 55216: функция принемает значения:
void input(char *data);
И обрабатывает их внутри, но как узнать размер переданных в нее данных???
Это не строки, это массив данных и нулевых значений в нём много, поэтому strlen(data) непригодна.
..Вопрос № 55287: Здравсвуйте, Эксперты!
Подскажите как работать с данными в excel'ой книге (считывать данные из ящеек). Как это сделать через com-объекты (примеры или где почитать)? ...
Вопрос № 55.203
Здраствуйте!!!
Поясните пожалуйста, человеческим языком кусок программы из приложения. Тоесть что зачем и как мы делаем в каждой из строк кода!!!
Приложение:
Отправлен: 12.09.2006, 20:53
Вопрос задал: chikanok (статус: 2-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Vaga
Здравствуйте, chikanok!
TAPI - штука серьезная. Трудно судить по этому куску программы как линия, которую Вы хотите мониторить была активизирована. Советую почитать книгу Chris Sells "Windows Telephony Programming". Он же написал TFX-библиотеку, так называемую "обертку" для чистых TAPI-функций, что существенно облегчает жизнь в процессе написания программ. TFX можно добыть здесь
http://www.sellsbrothers.com/.
Для общего развития:
http://www.i-b-a-m.de/Andreas_Marschall's_TAPI_and_TSPI_FAQ.htm
--------- Вольному - воля
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 12.09.2006, 22:48
Вопрос № 55.216
функция принемает значения:
void input(char *data);
И обрабатывает их внутри, но как узнать размер переданных в нее данных???
Это не строки, это массив данных и нулевых значений в нём много, поэтому strlen(data) непригодна.
Если передавать динамически созданный массив через new то мы конечно можем узнать его размер через msize.
Ну а как быть если помимо динамичесского массива мы принимаем и статические наример обычные строки (но с несколькими нулями например в теле), ну или хотябы туже обычную строку. например input("stroka dannih");
Вот... только один простенький вопрос... как мне узнать размер данных переданых по указателю в функцию. очень нехочется отдельно передовать размер в функцию вместе с данными, темболее что я сам невовсех случаях его знаю.
Очень прошу помочь ;(
Отправлен: 12.09.2006, 21:38
Вопрос задал: DDMZ (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Physicist
Здравствуйте, DDMZ!
Размер переданных данных по указателю на них Вы не определите ни как, поэтому предлагаю варианты:
1. Передавать размер отдельным параметром (то, чего Вы не хотите).
2. Передавать структуру типа
struct sdata
{
int size;
char* data;
};
3. Использовать шаблон vector<> из STL.
4. Хранить размер в первых нескольких байтах char* data (но такой вариант удобен не всегда).
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 12.09.2006, 21:54 Оценка за ответ: 5 Комментарий оценки: эх... комунить то надо отзыв после себя оставить =) оставляю первому кто написал что нельзя.
Я вообщем сделал так(пришлось): void input(char *data, int c); если c=-1 то массив динамический и размер функция определит сама, если c>0 то соответственно это размер массива.
Отвечает: Vaga
Здравствуйте, DDMZ!
Просто смотрим в справку по VC++:
using namespace std;
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "
The length of " << szHello << " is: "
<< sizeof szHello
<< "
The size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
результат:
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
--------- Вольному - воля
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 12.09.2006, 23:00
Отвечает: Хватов Сергей
Здравствуйте, DDMZ!
В общем случае - никак!
Если есть возможность, пусть тот, кто эту функцию вызывает, передает следующим пераметром явно размер данных.
Ну да, если память под переданные данные была получена через malloc или new - там прямо перед данными есть некий заголовок. Можно разобраться в реализации, подвинуть указатель назад и посмотреть на данные этого заголовка, но это совсем грязный способ.
Ответ отправил: Хватов Сергей (статус: 4-ый класс)
Ответ отправлен: 13.09.2006, 12:11
Отвечает: dentist
Здравствуйте, DDMZ!
никак.
самый простой вариант это добавить в функцию аргумент говорящий о размере первого.
можно конечно повыпендриваться и сказать что по указателю некая структура первые 4 байта которой есть размер в всё остальное данные но спросите себя вы уверены что потом не запутаетесь?
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 3-ий класс)
Ответ отправлен: 14.09.2006, 09:10
Вопрос № 55.287
Здравсвуйте, Эксперты!
Подскажите как работать с данными в excel'ой книге (считывать данные из ящеек). Как это сделать через com-объекты (примеры или где почитать)?
Отправлен: 13.09.2006, 14:14
Вопрос задал: D3rp (статус: 5-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Vaga
Здравствуйте, D3rp!
использовать дерективу #import.
Подробно в статье http://www.rsdn.ru/article/vcpp/import.xml
--------- Вольному - воля
Ответ отправил: Vaga (статус: 3-ий класс)
Ответ отправлен: 13.09.2006, 20:29 Оценка за ответ: 5 Комментарий оценки: Спасибо!