Главная страница
    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.034 c
3-1087377783
jek_
2004-06-16 13:23
2004.07.11
ADO и ACCESS


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


1-1088078327
ThermiT
2004-06-24 15:58
2004.07.11
Работа с MS Word (генерация отчетов)


4-1086090665
ПЛОВ
2004-06-01 15:51
2004.07.11
Проблема с консолью в XP


1-1088246843
CrazyHacKeRs
2004-06-26 14:47
2004.07.11
Помогите с DHTMLEdit (Active X)





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