procedure TCustomDBSynEdit.LoadMemo;
{$IFDEF SYN_COMPILER_3_UP}
var
BlobStream: TStream;
{$ELSE}
var
BlobStream: TBlobStream;
BlobField: TBlobField;
{$ENDIF}
begin
try
{$IFDEF SYN_COMPILER_3_UP}
BlobStream := FDataLink.DataSet.CreateBlobStream(FDataLink.Field, bmRead);
{$ELSE}
BlobField := FDataLink.Field as TBlobField;
BlobStream := TBlobStream.Create(BlobField, bmRead);
{$ENDIF}
Lines.BeginUpdate;
Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Default{$ENDIF});
Lines.EndUpdate;
BlobStream.Free;
Modified := False;
ClearUndo;
except
// Memo too large
on E: EInvalidOperation do
Lines.Text := Format('(%s)', [E.Message]);
end;
EditingChange(Self);
end;我把 Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Default{$ENDIF});
改为
Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Unicode{$ENDIF});
可以了,但存入数据库后在最前面多了个不可见的字符
{$IFDEF SYN_COMPILER_3_UP}
var
BlobStream: TStream;
{$ELSE}
var
BlobStream: TBlobStream;
BlobField: TBlobField;
{$ENDIF}
begin
try
{$IFDEF SYN_COMPILER_3_UP}
BlobStream := FDataLink.DataSet.CreateBlobStream(FDataLink.Field, bmRead);
{$ELSE}
BlobField := FDataLink.Field as TBlobField;
BlobStream := TBlobStream.Create(BlobField, bmRead);
{$ENDIF}
Lines.BeginUpdate;
Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Default{$ENDIF});
Lines.EndUpdate;
BlobStream.Free;
Modified := False;
ClearUndo;
except
// Memo too large
on E: EInvalidOperation do
Lines.Text := Format('(%s)', [E.Message]);
end;
EditingChange(Self);
end;我把 Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Default{$ENDIF});
改为
Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Unicode{$ENDIF});
可以了,但存入数据库后在最前面多了个不可见的字符
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货