Размер BLOB
Может кто знает, как узнать размер данных хранящихся в поле BLOB, при использовании TField????
Свойство size не подходит - оно возвращает 8 байт (как раз размер свойства Value т.к. оно типа Variant)
Сзаранее спасибо! )))
используй TBlobStream
Спасибо, но я эту задачу проще решил TBlobField(fields[n]).BlobSize
Теперь у меня другой вопрос, не по теме немножко, но всё равно:
Почему текст
Код:
stream.WriteBuffer(string('123'), 3);
пишет всё правильно, а текст
Код:
s:='123';
stream.WriteBuffer(string(s), length(s));
stream.WriteBuffer(string(s), length(s));
одни казябрики??
Код:
var s: string;
stream: TFileStream;
stream:=TFileStream.Create(FileName, fmCreate);
stream: TFileStream;
stream:=TFileStream.Create(FileName, fmCreate);
и почему при этом
Код:
Memo2.Lines.LoadFromStream(stream);
ни чего не выдаёт??
Теперь у меня другой вопрос, не по теме немножко, но всё равно:
Почему текст
Код:
stream.WriteBuffer(string('123'), 3);
пишет всё правильно, а текст
Код:
s:='123';
stream.WriteBuffer(string(s), length(s));
stream.WriteBuffer(string(s), length(s));
одни казябрики??[/QUOTE]
строки в поток надо писать так:
Код:
var
s: string;
begin
s := '123';
stream.writebuffer(s[1], length(s));
end;
s: string;
begin
s := '123';
stream.writebuffer(s[1], length(s));
end;
это связано со спецификой организации строк (string) в делфи
[QUOTE=misha_turist]
Код:
var s: string;
stream: TFileStream;
stream:=TFileStream.Create(FileName, fmCreate);
stream: TFileStream;
stream:=TFileStream.Create(FileName, fmCreate);
и почему при этом
Код:
Memo2.Lines.LoadFromStream(stream);
ни чего не выдаёт??[/QUOTE]
здесь при выполнении
stream:=TFileStream.Create(FileName, fmCreate)
создается новый чистый файл
здесь при выполнении
stream:=TFileStream.Create(FileName, fmCreate)
создается новый чистый файл[/QUOTE]
Так всё правильно, я старте программы создаю новый файл, при нажатии кнопки в него дописываю данные, потом загружаю их в memo и при выходе из программы удаляю поток.
Хотя скорей всего это из-за такого варианта открытия, но я пока не проверял.
Надеюсь, Position := 0 не забыл?
Цитата:
Хотя скорей всего это из-за такого варианта открытия, но я пока не проверял.
Читать можно только из потоков открытых fmOpenRead и fmReadWrite.
Для чтения из созданного файла - его закрыть надо, или открыть в другом потоке, предварительно пофлушав буфера.
Хотя скорей всего это из-за такого варианта открытия, но я пока не проверял.[/QUOTE]
а нахрена тебе создавать файл при СТАРТЕ программы.... по моему проще создать TMemoryStream.... с ним в проге и работать (и читать, и писАть).... а если в конце концов сохранить его в файл надо - используй Stream.SaveToFile
для чтения строки из потока нужно установить её длину SetLength(S, Size)
а затем считать Stream.ReadBuffer(S[1], Size)