Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Вниз

Хочу пример работы с istream в C++   Найти похожие ветки 

 
pasha_golub ©   (2009-10-05 18:06) [0]

Друзья, суть проблемы в следующем, что имеется С-шный тулкит, весь из себя прекрасный, да хороший. Авторам респект и все такое. Я хочу его заюзать в связке с Делфи. Поэтому думаю написать библиотеку посредническую. Посему вопрос:

bool  readGML (istream &is) const
 Reads the data from GML input stream is.
void  writeGML (ostream &os) const
 Writes the data to output stream os.


Пожалуйста, дайте ссылку или пример рабочий, как я могу засунуть обнаковенный PAnsiChar в эти меттоы.

С меня пиво, как обычно :) Москвичам - скидка :)


 
clickmaker ©   (2009-10-05 18:50) [1]

bool readGMLWrapper(PChar str, int maxLen)
{
istream stream;
readGML(stream);
stream.read(str, maxLen);
}

если я правильно понял задачу...


 
clickmaker ©   (2009-10-05 18:51) [2]

PChar это char*, конечно же )


 
pasha_golub ©   (2009-10-06 11:13) [3]

Ага, спасибо. А я, грешным делом, думал, что тут возня типа такой имелась ввиду:

is >> str >> ...

Еще вопрос. А почему не:

bool readGMLWrapper(char* str, int maxLen)
{
istream stream;
stream.read(str, maxLen);
readGML(stream);
}


По идее я сначала ж должен положить нечто в стрим, чтобы из него потом некто прочел?


 
tesseract ©   (2009-10-06 11:19) [4]


> По идее я сначала ж должен положить нечто в стрим, чтобы
> из него потом некто прочел?


Если я правильно понимаю, то как  раз ReadGML и читает, а stream.read это уже запихиваем в str.


 
pasha_golub ©   (2009-10-06 11:57) [5]

Не. ReadGML это метод класса. Который брат другому ReadGML который читает из файла:


> bool  readGML (const String &fileName)
>   Reads the data from a GML file fileName.
> bool  readGML (istream &is)
>   Reads the data from a GML input stream is.


Так вот я чтобы с файлами не играться, хочу стримы заюзать


 
clickmaker ©   (2009-10-06 12:00) [6]

> хочу стримы заюзать

дельфийские, что-ли?


 
pasha_golub ©   (2009-10-06 12:32) [7]


> clickmaker ©   (06.10.09 12:00) [6]

Та не. :)

Как у меня эт в голове:


function readGMLWrapper(s: PAnsiChar; len: longint): boolean; stdcall; external "mywrapper.dll" name "readGMLWrapper";


То есть из Д я просто плюю строку, а readGMLWrapper создает класс, и вызывает этого класса метод readGML.

Мне нужно скормить данные GML классу из сишной библиотеки. Я не хочу это делать через файл,а хочу через istream

Блин, шо неужели плохо так объясняю? :)


 
clickmaker ©   (2009-10-06 12:37) [8]

может, что-то типа такого

bool readGMLWrapper(char* str, int size)
{
stringbuf buf;
buf.sputn(str, size);
buf.pubseekpos(0);
istream stream(&buf);
readGML(stream);
}


 
pasha_golub ©   (2009-10-06 12:47) [9]


> clickmaker ©   (06.10.09 12:37) [8]
>
> может, что-то типа такого
>

О, похоже, вроде. А первый вариант не рабочий?


 
pasha_golub ©   (2009-10-07 09:48) [10]

Всем спасибо. Зашуршало. Правда довелось понервничать. Пока не подсунул using namespace std ни в какую не хотело.

С меня пузырь. :)

А как бы теперь отдать через ostream? :) Просто боюсь мемликов наплодить с этими строками и пр., поможите уж... еще пузырь на кону. :)


 
clickmaker ©   (2009-10-07 11:14) [11]

ну наверно также, только наоборот

void writeGMLWrapper(char* str, int size)
{
stringbuf buf;
ostream stream(&buf);
writeGML(stream);
buf.pubseekpos(0);
buf.sgetn(str, size);
}


 
pasha_golub ©   (2009-10-07 13:28) [12]

Огромное пасиба. Два пузыря на счету. :)
Вопрос тогда. Кто будет освобождать char* str ?

Я из хост-приложения?


 
clickmaker ©   (2009-10-07 13:40) [13]

> Вопрос тогда. Кто будет освобождать char* str ?

ну либо array[0..N] of char, либо StrAlloc/StrDispose



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2009.12.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1255947778
Инна
2009-10-19 14:22
2009.12.06
Дерево каталогов&список файлов


2-1255948890
VGK
2009-10-19 14:41
2009.12.06
Нужна помощь: получить все четырехзначные натуральные числа...


2-1255932245
Фуфик
2009-10-19 10:04
2009.12.06
последняя строка Excel


2-1255949054
Роман
2009-10-19 14:44
2009.12.06
как вывести отчет


2-1256050979
CodeRz
2009-10-20 19:02
2009.12.06
Найти число длиной N





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский