Aynı sorun rastladı ve kaynak kodunu biraz kesmek:
bsonDoc.pas görüyoruz. İşte ben o zaman pişmiş ne: nerede uygun
procedure TBSONDocument.ReadStream(F: TStream);
var
len : Integer;
elmtype : Byte;
elmname : string;
begin
Clear;
F.Read(len, SizeOf(len));
F.Read(elmtype, SizeOf(Byte));
while elmtype <> BSON_EOF do
begin
elmname := _ReadString(F);
SetLength(FItems, Length(FItems)+1);
case elmtype of
BSON_FLOAT: FItems[High(FItems)] := TBSONDoubleItem.Create;
BSON_STRING: FItems[High(FItems)] := TBSONStringItem.Create;
BSON_DOC: FItems[High(FItems)] := TBSONDocumentItem.Create; // Mrsky
BSON_ARRAY: FItems[High(FItems)] := TBSONArrayItem.Create;
BSON_BINARY: FItems[High(FItems)] := TBSONBinaryItem.Create;
BSON_OBJECTID: FItems[High(FItems)] := TBSONObjectIDItem.Create;
BSON_BOOLEAN: FItems[High(FItems)] := TBSONBooleanItem.Create;
BSON_DATETIME: FItems[High(FItems)] := TBSONDatetimeItem.Create(0); // Mrsky
BSON_REGEX: FItems[High(FItems)] := TBSONRegExItem.Create;
BSON_DBPTR: FItems[High(FItems)] := TBSONDBRefItem.Create;
BSON_JS: FItems[High(FItems)] := TBSONJSItem.Create;
BSON_SYMBOL: FItems[High(FItems)] := TBSONSymbolItem.Create;
BSON_JSSCOPE: FItems[High(FItems)] := TBSONScopedJSItem.Create;
BSON_INT32: FItems[High(FItems)] := TBSONIntItem.Create;
BSON_INT64: FItems[High(FItems)] := TBSONInt64Item.Create;
BSON_MINKEY: FItems[High(FItems)] := TBSONItem.Create(BSON_MINKEY);
BSON_MAXKEY: FItems[High(FItems)] := TBSONItem.Create(BSON_MAXKEY);
else
raise EBSONException.Create('Unimplemented element handler '+IntToStr(elmtype));
end;
with FItems[High(FItems)] do
begin
elname := elmname;
ReadStream(f);
end;
f.Read(elmtype, SizeOf(Byte));
end;
end;
Yol "Ücretsiz" yöntemi hayata geçirildi takdir ve hepsi kaldırmak ve yeni tanıtılan vermedi buna göre yıkıcı yöntemi "Yok".
Umarım sizin için biraz yardımcı olacaktır.
"Desteklenmiyor" ?! –
Hangi Delphi kütüphanesini kullanıyorsunuz ve ihtiyacınız olan BSON özellikleri desteklenmiyor mu? –
Kütüphane, aşağıda ve yayınladığım özellikte. –