Prechádzať zdrojové kódy

* changed tbookmark to tbytes, bookmarkstr to ansistring. Delphi 2009+ compat.

git-svn-id: trunk@21037 -
marco 13 rokov pred
rodič
commit
8f39076a69

+ 2 - 2
packages/fcl-db/src/base/bufdataset.pas

@@ -2713,13 +2713,13 @@ end;
 
 function TCustomBufDataset.BookmarkValid(ABookmark: TBookmark): Boolean;
 begin
-  Result:=assigned(FCurrentIndex) and  FCurrentIndex.BookmarkValid(ABookmark);
+  Result:=assigned(FCurrentIndex) and  FCurrentIndex.BookmarkValid(pointer(ABookmark));
 end;
 
 function TCustomBufDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark
   ): Longint;
 begin
-  if Assigned(FCurrentIndex) and FCurrentIndex.CompareBookmarks(Bookmark1,Bookmark2) then
+  if Assigned(FCurrentIndex) and FCurrentIndex.CompareBookmarks(pointer(Bookmark1),pointer(Bookmark2)) then
     Result := 0
   else
     Result := -1;

+ 10 - 4
packages/fcl-db/src/base/dataset.inc

@@ -1790,7 +1790,9 @@ Procedure TDataset.FreeBookmark(ABookmark: TBookmark);
 
 
 begin
-  FreeMem(ABookMark,FBookMarkSize);
+  {$ifdef noautomatedbookmark}
+   FreeMem(ABookMark,FBookMarkSize);
+  {$endif}
 end;
 
 Function TDataset.GetBookmark: TBookmark;
@@ -1799,8 +1801,12 @@ Function TDataset.GetBookmark: TBookmark;
 begin
   if BookmarkAvailable then
     begin
-    GetMem (Result,FBookMarkSize);
-    GetBookMarkdata(ActiveBuffer,Result);
+    {$ifdef noautomatedbookmark}
+      GetMem (Result,FBookMarkSize);
+    {$else}
+      setlength(Result,FBookMarkSize);
+    {$endif}
+    GetBookMarkdata(ActiveBuffer,pointer(Result));
     end
   else
     Result:=Nil;
@@ -1859,7 +1865,7 @@ begin
     begin
     CheckBrowseMode;
     DoBeforeScroll;
-    InternalGotoBookMark(ABookMark);
+    InternalGotoBookMark(pointer(ABookMark));
     Resync([rmExact,rmCenter]);
     DoAfterScroll;
     end;

+ 6 - 2
packages/fcl-db/src/base/db.pas

@@ -1243,9 +1243,13 @@ type
   end;
 
 { TDataSet }
-
+  
+  {$ifdef noautomatedbookmark}
   TBookmark = Pointer;
-  TBookmarkStr = string;
+  {$else}
+  TBookMark = TBytes;
+  {$endif}
+  TBookmarkStr = ansistring;
 
   PBookmarkFlag = ^TBookmarkFlag;
   TBookmarkFlag = (bfCurrent, bfBOF, bfEOF, bfInserted);