![]() |
|
|
#1
|
|||
|
|||
|
Привет.
Может ли кто подсказать как разрешить данную ситуацию в Delphi2010? В 2007 всё верно Код:
Re: TRichEdit;
a:string;
b: string;
Stream:= TMemoryStream.Create;
a:='12345';
re.Lines.Add(a);
Re.Lines.Savetostream(stream);
b:='67890';
Stream.Write(PChar(b)^, Length(b)*SizeOf(Char));
Stream.Position := 0;
Stream.SaveToFile('Путь к файлу');ТО есть 6х7х8х9х0х Переменная a записывается корректно. Первоначально в Stream записывались данные полученные из запрос к БД с помощью (qryBlobAccess.FieldByName(FieldName) as TBlobField).SaveToStream(Stream) но с таким же некорректным результатом/ В чем может быть проблема? Что-то с кодировкой? Как можно обойти эту проблему? Последний раз редактировалось Admin, 21.08.2010 в 23:23. |
|
#2
|
||||
|
||||
|
Код:
var ... b: AnsiString; ... Ибо в Д2010 по умолчанию юникод, то-бишь двухбайтовый WideString, от него и "лишний" символ. З.Ы. SizeOf(Char) - улыбнуло, символ сколько байт занимает? Правильно, 1. Лишнее вычесление. Последний раз редактировалось PhoeniX, 17.08.2010 в 12:27. |
|
#3
|
|||
|
|||
|
Цитата:
Спасибо! )) По крайней мере с Write сработало ))А как разобраться когда в Stream пишется вот так: qryBlobAccess : TCssBlobQuery; begin qryBlobAccess.SQL.Clear; qryBlobAccess.SQL.Add( Statement ); qryBlobAccess.Open; try if qryBlobAccess.FieldByName(FieldName).IsNull then Exit; Result := TMemoryStream.Create; (qryBlobAccess.FieldByName(FieldName) as BlobField).SaveToStream(Result); Result.Position := 0; Вот в таком виде она тоже "приклеивает" лишнее |
|
#4
|
||||
|
||||
|
Честно, с этим компонентом не работал, да и вообще его не видел. Есть подозрение, что он устанавливался дополнительно, и (возможно) писался под другую версию Delphi - следовательно, метод SaveToStream не заточен явно под ANSI.
Что делать? Либо переписывать самому, либо искать аналог под 2010. З.Ы. ТЕГИ, ***, где? Правила читаем? |