Главная страница
    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.038 c
3-1086953301
Alecs
2004-06-11 15:28
2004.07.11
Как найти удалённые записи в БД InterBase?


4-1085593687
Nese
2004-05-26 21:48
2004.07.11
Kak delat chto bi, u dannoy forme bil svoy hendle na TaskBar-e


3-1087185938
JB
2004-06-14 08:05
2004.07.11
Установка BDE


1-1087988428
Сашка
2004-06-23 15:00
2004.07.11
Отлов расстыковки


1-1088059865
Maks Realov
2004-06-24 10:51
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский