Форум: "Прочее";
Текущий архив: 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.005 c