Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.06;
Скачать: CL | DM;

Вниз

Хочу пример работы с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1256026045
Роман
2009-10-20 12:07
2009.12.06
between или <= =>


15-1254984944
Savek
2009-10-08 10:55
2009.12.06
Недостаточно привилегий


2-1255952808
Fedor
2009-10-19 15:46
2009.12.06
Нажать кнопку ОК в javascript окне WebBrowser а


9-1183225938
@!!ex
2007-06-30 21:52
2009.12.06
OpenGL. Модуль для работы с шейдерами.


15-1254918035
Kerk
2009-10-07 16:20
2009.12.06
Регэксп