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

Вниз

Раскажите неумному как записать в поток...   Найти похожие ветки 

 
denis24   (2004-06-23 13:38) [0]

Есть датасет,В цикле хочу записать пару столбцов в поток(чтоб не создавать временную бд) для дальнейшего использования.
Так вот .Как записывать в поток ,какой класс потока применить (TstringStream,TmemoryStream....)
Как пото м считать из него выбирая значения этих полей?


 
Sandman25 ©   (2004-06-23 13:52) [1]

>для дальнейшего использования.

какого именно? При следующем запуске программы?


 
Digitman ©   (2004-06-23 13:55) [2]


> Как записывать в поток


в цикле пройдись по всем записям НД, считывай значение поля и записывай в поток


> какой класс потока применить (TstringStream,TmemoryStream....)


зависит от типа поля


 
denis24   (2004-06-23 14:00) [3]

в этом же сеансе програмы.Для создания отчета.
Поля стринговые.


 
Sandman25 ©   (2004-06-23 14:02) [4]

[3] denis24   (23.06.04 14:00)

Я обычно в таком случае использую динамические массивы, очень удобно.


 
denis24   (2004-06-23 14:49) [5]

не спорю
но мне потом в quickreport в streamband.loadfromstream() надо


 
Sandman25 ©   (2004-06-23 14:51) [6]

Тогда TMemory IMHO


 
denis24   (2004-06-23 15:03) [7]

а как в него записать?
там есть функция tmemory.write(buffer,count) где count кол-во байтов.Как их определить по значению поля ?


 
Sandman25 ©   (2004-06-23 15:08) [8]

S := MyField.AsString;
MemoryStream.WriteBuffer(PChar(S), Length(S));


 
Digitman ©   (2004-06-23 15:09) [9]


> Как их определить по значению поля ?


см. TField.Size, TField.GetData()


 
denis24   (2004-06-23 16:48) [10]

Почему у меня в поток не пишется?
s1:=....FieldByName("bin").Asstring;
tempstream.WriteBuffer(s1,length(s1));

проверяю заисью в файл
tempstream.savetofile("111");
и он пустой


 
Sandman25 ©   (2004-06-23 17:02) [11]

[10] denis24   (23.06.04 16:48)

Лучше воспользуйтесь советом [9] Digitman ©   (23.06.04 15:09)
чтобы не гонять данные через дополнительный бфер


 
Digitman ©   (2004-06-23 17:07) [12]


> denis24   (23.06.04 16:48) [10]


> Почему у меня в поток не пишется?


потому что ты не видишь разницы между ShortString (статика) и LargeString (динамика)

var len: Integer;
..
//записываем строку
s1:=....FieldByName("bin").Asstring;
len := length(s1); //в буфер - длину строки
tempstream.WriteBuffer(len,SizeOf(len)); //пишем в поток длину строки
tempstream.WriteBuffer(PChar(s1)^,len); //пишем в поток собственно строку длиной len символов

..
//считываем строку
tempstream.ReadBuffer(len,SizeOf(len)); //читаем из потока длину строки
SetLength(S1, len);
tempstream.ReadBuffer(PChar(s1)^,len); //читаем из потока  собственно строку длиной len символов


 
denis24   (2004-06-23 17:17) [13]

Спасибо Digitman-u за подробное обьяснение.Точно.



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

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
4-1086023452
Manulo
2004-05-31 21:10
2004.07.11
Запуск команды от имени другого пользователя


14-1087870401
Думкин
2004-06-22 06:13
2004.07.11
С днем рождения! 22 июня


1-1088423282
jenbond
2004-06-28 15:48
2004.07.11
Проблемма с подсчетом количества компанентов на форме


14-1087980679
AlexG
2004-06-23 12:51
2004.07.11
Алгоритмы сжатия


14-1087583312
Zeqfreed
2004-06-18 22:28
2004.07.11
Помогите выбрать видеокамеру





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский