nyuuzyou/wikis huggingface dataset:
Как паковать таблицу?

=== Как паковать таблицу? ===
{ Packs a Paradox table by calling the BDE DbiDoRestructure function. The TTable passed as the first parameter must be closed. The TDatabase passed as the second parameter must be connected. }
function dgPackParadoxTable(Tbl: TTable; Db: TDatabase): DBIResult;
var
 TblDesc: CRTblDesc;
begin
 Result := DBIERR_NA;
 FillChar(TblDesc, SizeOf(CRTblDesc), 0);
 StrPCopy(TblDesc.szTblName, Tbl.TableName);
 TblDesc.bPack := True;
 Result := DbiDoRestructure(Db.Handle, 1, @TblDesc, nil, nil, nil, False);
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02698
----
uses
 DbiProcs;
with Table do
begin
 OldState := Active;
 Close;
 Exclusive := True;
 Open;
 DbiPackTable(DBHandle, Handle, nil, nil, True);
 {^ здесь можно добавить check()}
 Close;
 Exclusive := False;
 Active := OldState;
 { при желании можно сохранить закладку }
end;
Author: Nomadic
Source: Взято с http://delphiworld.narod.ru
ID: 02699
Как перевести TWebBrowser в режим редактирования (дизайна)?

{
 You can use the designMode property to put the Webbrowser
 into a mode where you can edit the current document.
}
uses
 MSHTML_TLB;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
var
 CurrentWB: IWebBrowser;
begin
 CurrentWB := pDisp as IWebBrowser;
 (CurrentWB.Document as IHTMLDocument2).DesignMode := 'On';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 WebBrowser1.Navigate('http://wp.netscape.com/assist/net_sites/example1-F.html')
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03468
Category:Связь
Category:WebBrowser
Как перевести компьютер в Stend-by или Hibernate?

=== Как перевести компьютер в Stend-by или Hibernate? ===
{
 The SetSuspendState function suspends the system by shutting power down.
 Depending on the Hibernate parameter,
 the system either enters a suspend (sleep) state or hibernation.
 Syntax:
}
 function SetSuspendState(
 Hibernate: Boolean,
 ForceCritical: Boolean,
 DisableWakeEvent: Boolean);
{ Parameters:
 Hibernate: If this parameter is TRUE, the system hibernates.
 If the parameter is FALSE, the system is suspended.
 ForceCritical: If this parameter is TRUE, the system suspends operation immediately;
 if it is FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to
 each application to request permission to suspend operation.
 DisableWakeEvent: If this parameter is TRUE, the system disables all wake events.
 If the parameter is FALSE, any system wake events remain enabled.
 Windows NT/2000/XP: Included in Windows 2000 and later.
 Windows 95/98/Me: Included in Windows 98 and later.
}
var
 _SetSuspendState: function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL
 stdcall = nil;
 function LinkAPI(const module, functionname: string): Pointer; forward;
function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: Boolean): Boolean;
begin
 if not Assigned(_SetSuspendState) then
 @_SetSuspendState := LinkAPI('POWRPROF.dll', 'SetSuspendState');
 if Assigned(_SetSuspendState) then
 Result := _SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent)
 else
 Result := False;
end;
function LinkAPI(const module, functionname: string): Pointer;
var
 hLib: HMODULE;
begin
 hLib := GetModulehandle(PChar(module));
 if hLib = 0 then
 hLib := LoadLibrary(PChar(module));
 if hLib <> 0 then
 Result := getProcAddress(hLib, PChar(functionname))
 else
 Result := nil;
end;
// Example Call:
// Beispielaufruf:
procedure TForm1.Button1Click(Sender: TObject);
begin
 SetSuspendState(True, False, False);
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01700
----
procedure TForm1.Button1Click(Sender: TObject);
begin
 SendMessage(Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 1);
end
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01701
Как перевести монитор в режим stand-by

=== Как перевести монитор в режим stand-by ===
Если монитор поддерживает режим Stand by, то его можно программно перевести в этот режим. Данная возможность доступна на Windows95 и выше. 
Чтобы перевести монитор в режим Stand by: 
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 0);
Чтобы вывести его из этого режима: 
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, -1);
Source: http://delphiworld.narod.ru/
ID: 01461
Как перевести монитор в режим stand-by?

=== Как перевести монитор в режим stand-by ===
Если монитор поддерживает режим Stand by, то его можно программно перевести в этот режим. Данная возможность доступна на Windows95 и выше. 
Чтобы перевести монитор в режим Stand by: 
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, 0);
Чтобы вывести его из этого режима: 
SendMessage(Application.Handle, wm_SysCommand, SC_MonitorPower, -1);
Source: http://delphiworld.narod.ru/
ID: 01461
Как передать UserName и Password в удаленный модуль данных

=== Как передать UserName и Password в удаленный модуль данных? ===
В Удаленный Модуль Данных бросьте компонент TDatabase, затем добавьте процедуру автоматизации (пункт главного меню Edit | Add To Interface) для Login.
Убедитесь, что свойство HandleShared компонента TDatabase установлено в True.
procedure Login(UserName, Password: WideString);
begin
 { DB = TDatabase }
 { Something unique between clients }
 DB.DatabaseName := UserName + 'DB';
 DB.Params.Values['USER NAME'] := UserName;
 DB.Params.Values['PASSWORD'] := Password;
 DB.Open;
end;
После того, как Вы создали этот метод автоматизации, Вы можете вызывать его с помощью:
RemoteServer1.AppServer.Login('USERNAME', 'PASSWORD');
Source: Взято с http://delphiworld.narod.ru
ID: 02408
Как передать UserName и Password в удаленный модуль данных?

=== Как передать UserName и Password в удаленный модуль данных? ===
В Удаленный Модуль Данных бросьте компонент TDatabase, затем добавьте процедуру автоматизации (пункт главного меню Edit | Add To Interface) для Login.
Убедитесь, что свойство HandleShared компонента TDatabase установлено в True.
procedure Login(UserName, Password: WideString);
begin
 { DB = TDatabase }
 { Something unique between clients }
 DB.DatabaseName := UserName + 'DB';
 DB.Params.Values['USER NAME'] := UserName;
 DB.Params.Values['PASSWORD'] := Password;
 DB.Open;
end;
После того, как Вы создали этот метод автоматизации, Вы можете вызывать его с помощью:
RemoteServer1.AppServer.Login('USERNAME', 'PASSWORD');
Source: Взято с http://delphiworld.narod.ru
ID: 02408
Как передать картинку по сети через ServerSocket?

Со стороны, откуда посылаем (у нас это клиент), пишем:
var
 st: TStream;
begin
 st := TFileStream.Create('M:\\MyFile.jpg', fmOpenRead);
 // ИЛИ, если мы работаем без сохранения (тогда не создается файл)
 st := TMemoryStream.Create();
 try
 st.Position := 0;
 Image1.Picture.Bitmap.SaveToStream(st);
 // и, наконец, шлем на сервер битмап
 st.Position := 0;
 ClientSocket1.Socket.SendStream(st);
 finally
 st.Free();
 end;
end;
Обратите внимание, не забывайте перед каждой операцией с потоком устанавливать позицию в 0!!! Иначе получим не то, что хотелось бы
Ну а со стороны приема (у нас это, соответственно, серверсокет), в событии приема пишем:
var
 ibLen: Integer;
 buf: AnsiString;
 st: TStream;
begin
 ibLen := ServerSocket1.Socket.ReceiveLength();
 if ibLen > 0 then
 begin
 SetLength(buf, ibLen + 1);
 st := TMemoryStream.Create();
 try
 st.Position := 0;
 ServerSocket1.Socket.ReceiveBuf(buf[1], ibLen);
 st.WriteBuffer(buf[1], ibLen);
 st.Position := 0;
 Image1.Picture.Bitmap.LoadFromStream(st);
 // или
 st.SaveToFile('M:\\MyFile.jpg');
 finally
 st.Free();
 end;
 end;
end;
Author: TwoK
Source: Vingrad.ru http://forum.vingrad.ru
ID: 03545
Category:Связь
Category:Сокеты
Как передать массив как параметр?

=== Как передать массив как параметр? ===
Для начала, нужно задать имя типа массива, чтобы затем назначать его переменным и параметрам:
type Ta = array of something;
var a: Ta;
Передача параметров процедуры и функции в дельфи:
Вариант 1.
procedure Proc(a: Ta); 
внутри процедуры создаётся копия массива, внутри процедуры работа осуществляется только с копией данных. Недостаток: если а имеет большой размер то передача его в процедуру будет долгой и с большими затратами памяти, так как процедура должна будет скопировать всё содержимое и выделить память для копии.
Вариант 2.
procedure Proc(var a: Ta);
внутри процедуры код работает именно с переменной а и её содержимым
Вариант 3.
procedure Proc(const a: Ta);
внутри процедуры запрещено изменять данные переменной а
Вариант 4.
procedure Proc(out a: Ta);
при входе в процедуру массив рассматривается как пустой, но после выполнения процедуры можно получить значения
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: http://forum.vingrad.ru
ID: 00077
Как передать при создании нити (Tthread) ей некоторое значение?

=== Как передать при создании нити (Tthread) ей некоторое значение? ===
К примеру, функция "прослушивает" каталог на предмет файлов. Если находит, то создает нить, которая будет обрабатывать файл. Потомку надо передать имя файла, а вот как?
Странный вопрос. Я бы понял, если бы требовалось передавать данные во время работы нити. А так обычно поступают следующим образом.
В объект нити, происходящий от TThread дописывают поля. Как правило, в секцию PRIVATE. Затем переопределяют конструктор CREATE, который, принимая необходимые параметры заполняет соответствующие поля. А уже в методе EXECUTE легко можно пользоваться данными, переданными ей при его создании.
Например:
TYourThread = class(TTHread)
private
 FFileName: String;
protected
 procedure Execute; overrided;
public
 constructor Create(CreateSuspennded: Boolean;
 const AFileName: String);
end;
constructor TYourThread.Create(CreateSuspennded: Boolean;
 const AFileName: String);
begin
 inherited Create(CreateSuspennded);
 FFIleName := AFileName;
end;
procedure TYourThread.Execute;
begin
 try
 if FFileName = ...
 except
 // ....
 end;
end;
TYourForm = class(TForm)
private
 YourThread: TYourThread;
 procedure LaunchYourThread(const AFileName: String);
 procedure YourTreadTerminate(Sender: TObject);
end;
procedure TYourForm.LaunchYourThread(
 const AFileName: String);
begin
 YourThread := TYourThread.Create(True, AFileName);
 YourThread.OnTerminate := YourTreadTerminate;
 YourThread.Resume
end;
procedure TYourForm.YourTreadTerminate(Sender: TObject);
begin
 // ....
end;
end.
Source: http://dmitry9.nm.ru/info/
ID: 00305
Как передать строку другому приложению

=== Как передать строку другому приложению ===
получатель:
type
 TFormReceive = class(TForm)
 private
 procedure ReceiveMessage(var Msg: TMessage); message WM_COPYDATA;
 end;
implementation
procedure TFormReceive.ReceiveMessage;
var
 pcd: PCopyDataStruct;
begin
 pcd := PCopyDataStruct(Msg.LParam);
 Caption := PChar(pcd.lpData);
end;
отправитель:
procedure TFormXXX.Button1Click(Sender: TObject);
var
 cd: TCopyDataStruct;
begin
 cd.cbData := Length(Edit1.Text) + 1;
 cd.lpData := PChar(Edit1.Text);
 SendMessage(FindWindow('TFormReceive', nil), WM_COPYDATA, 0, LParam(@cd));
end;
Source: http://delphiworld.narod.ru/
ID: 02142
Как передвинуть колонку в TDBGrid?

=== Как передвинуть колонку в TDBGrid? ===
type
 THackAccess = class(TCustomGrid);
{
 THackAccess Is needed because TCustomGrid.MoveColumn is
 protected and you can't access it directly.
}
// In the implementation-Section:
procedure MoveDBGridColumns(DBGrid: TDBGrid; FromColumn, ToColumn: Integer);
begin
 THackAccess(DBGrid).MoveColumn(FromColumn, ToColumn);
end;
{ Example }
procedure TForm1.Button1Click(Sender: TObject);
begin
 MoveDBGridColumns(DBGrid1, 1, 2)
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03036
Category:Базы данных
Category:DBGrid
Как переделать TLabel в URL

Приложение содержит ссылку, которая позволяет запускать Браузер и сразу перейти по указанному в ссылке адресу. Процесс создания URL заключается в переделке компоненты TLabel в URL.
Следующие 3 шага показывают как переделать TLabel в URL.
# Установите в свойствах шрифта подчёркивание и цвет ссылки.
# Установите свойства курсора. Когда мышка попадает на URL, то курсор должен превращаться в ручку.
# Записываем событие OnClick для ссылки. Когда пользователь нажимает на ссылку, то запускается браузер, который автоматически переходит на заданный адрес. 
Однако этого мало! Нужно будет добавить в приложение ещё одну строчку. Та самая строчка:
ShellExecute(0, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
Внимание: функция ShellExecute содержится в ShellAPI, поэтому вам придётся включить его в проект.
Пример приложения
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ShellAPI;
type
 TForm1 = class(TForm)
 URLLabel: TLabel;
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure URLLabelClick(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Close;
end;
procedure TForm1.URLLabelClick(Sender: TObject);
const
 URL: string = 'http://www.sources.ru';
begin
 ShellExecute(0, 'open', PChar(URL), nil, nil, SW_SHOWNORMAL);
end;
end.
Author: Kevin Lange (klange@partslink.com)
Source: Взято из http://forum.sources.ru
ID: 00585
Category:Связь
Category:Web
Как переделать TLabel в URL?

=== Как переделать TLabel в URL? ===
By Kevin Lange (klange@partslink.com) 
Приложение содержит ссылку, которая позволяет запускать Браузер и сразу перейти по указанному в ссылке адресу. Процесс создания URL заключается в переделке компоненты TLabel в URL. 
Следующие 3 шага показывают как переделать TLabel в URL.
* Шаг 1 Установите в свойствах шрифта подчёркивание и цвет ссылки. 
* Шаг 2 Установите свойства курсора. Когда мышка попадает на URL, то курсор должен превращаться в ручку. 
* Шаг 3 Записываем событие OnClick для ссылки. Когда пользователь нажимает на ссылку, то запускается браузер, который автоматически переходит на заданный адрес. Однако этого мало! Нужно будет добавить в приложение ещё одну строчку 
Та самая строчка: 
 ShellExecute(0, 'open', pChar(URL), NIL, NIL, SW_SHOWNORMAL); 
Внимание: функция ShellExecute содержится в ShellAPI, поэтому вам придётся включить его в проект.
Пример приложения 
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ShellAPI;
type
 TForm1 = class(TForm)
 URLLabel: TLabel;
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure URLLabelClick(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Close;
end;
procedure TForm1.URLLabelClick(Sender: TObject);
Const
 URL: String = 'http://www.sources.ru';
begin
 ShellExecute(0, 'open', pChar(URL), NIL, NIL, SW_SHOWNORMAL);
end;
end.
Source: Взято из http://forum.sources.ru
ID: 00585
Как перезагрузить Explorer?

=== Как перезагрузить Explorer? ===
 HWND hwndShell;
 hwndShell = FindWindow ("Progman", NULL);
 PostMessage(hwndShell, WM_QUIT, 0, 0L);
 ShellExecute(0, "open", "Explorer", NULL, NULL, SW_SHOWNORMAL);
ID: 02389
Как перейти к нужному ключу в Regedit?

=== Как перейти к нужному ключу в Regedit? ===
unit Unit1;
interface
uses
 Windows, Messages, Classes, Controls, Forms, StdCtrls;
type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure JumpToKey(Key: string);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
uses
 ShellAPI;
procedure TForm1.JumpToKey(Key: string);
var
 i, n: Integer;
 hWin: HWND;
 ExecInfo: ShellExecuteInfoA;
begin
 hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil);
 if hWin = 0 then
 { if Regedit doesn't run then we launch it }
 begin
 FillChar(ExecInfo, 60, #0);
 with ExecInfo do
 begin
 cbSize := 60;
 fMask := SEE_MASK_NOCLOSEPROCESS;
 lpVerb := PChar('open');
 lpFile := PChar('regedit.exe');
 nShow := 1;
 end;
 ShellExecuteExA(@ExecInfo);
 WaitForInputIdle(ExecInfo.hProcess, 200);
 hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil);
 end;
 ShowWindow(hWin, SW_SHOWNORMAL);
 hWin := FindWindowExA(hWin, 0, PChar('SysTreeView32'), nil);
 SetForegroundWindow(hWin);
 i := 30;
 repeat
 SendMessageA(hWin, WM_KEYDOWN, VK_LEFT, 0);
 Dec(i);
 until i = 0;
 Sleep(500);
 SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0);
 Sleep(500);
 i := 1;
 n := Length(Key);
 repeat
 if Key[i] = '\' then
 begin
 SendMessageA(hWin, WM_KEYDOWN, VK_RIGHT, 0);
 Sleep(500);
 end
 else
 SendMessageA(hWin, WM_CHAR, Integer(Key[i]), 0);
 i := i + 1;
 until i = n;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 JumpToKey('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer');
end;
end.
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 02303
Как перейти к указанной записи в БД

=== Как перейти к указанной записи в БД ===
function TBDEDirect.GoToRecord(RecNo: LongInt): Boolean;
var
 RecCount: LongInt;
 Bookmark: TBookmark;
 Res: DBIResult;
begin
 Result := False;
 if CheckDatabase then
 begin
 if RecNo < 1 then
 RecNo := 1;
 RecCount := GetRecordCount;
 if RecNo > RecCount then
 RecNo := RecCount;
 Res := DbiSetToRecordNo(FDataLink.DataSource.DataSet.Handle, RecNo);
 if Res = 0 then
 begin
 Bookmark := StrAlloc(GetBookmarkSize);
 DbiGetBookmark(FDataLink.DataSource.DataSet.Handle, Bookmark);
 FDataLink.DataSource.DataSet.GoToBookmark(Bookmark);
 FDataLink.DataSource.DataSet.FreeBookmark(Bookmark);
 Result := True;
 end
 else
 Check(Res);
 end;
end;
Source: Взято с http://delphiworld.narod.ru
ID: 02547
Как перекинуть все данные из одной базы данных в другую?

=== Как перекинуть все данные из одной базы данных в другую? ===
Есть такая утилита, к делфям в комплекте идет. DataPump называется. Перекинет тебе все, что надо, индексы создаст.
Source: Взято с http://delphiworld.narod.ru
ID: 02407
Как переместить каретку TMemo в нужную строку?

=== Как переместить каретку TMemo в нужную строку? ===
function SetCaretPosition(memo: TMemo; x, y: Integer);
var
 i: Integer;
begin
 i := SendMessage(memo.Handle, EM_LINEINDEX, y, 0) + x;
 SendMessage(memo.Handle, EM_SETSEL, i, i);
end;
или
type
 TFake = class(TCustomMemo);
implementation
TFake(MyMemo).SetCaretPos();
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00546
Как перемещать строки и колонки в StringGrid?

=== Как перемещать строки и колонки в StringGrid? ===
Пользователь может перемещать строки и колонки StringGrid при помощи мышки. Можно ли это сделать программно? В описании TCustomGrid можно увидеть методы MoveColumn и MoveRow, однако они скрыты в TStringGrid. Но нам ничего не мешает просабклассить TStringGrid и объявить эти методы как public:
type
 TStringGridX = class(TStringGrid)
 public
 procedure MoveColumn(FromIndex, ToIndex: Longint);
 procedure MoveRow(FromIndex, ToIndex: Longint);
 end;
Чтобы воспользоваться этими методами, достаточно вызвать соответствующий метод предка:
procedure TStringGridX.MoveColumn(FromIndex, ToIndex: Integer);
begin
 inherited;
end;
procedure TStringGridX.MoveRow(FromIndex, ToIndex: Integer);
begin
 inherited;
end;
Этот компонент не нужно регистрировать в палитре компонентов. Просто используйте потомка TStringGrid или любого TCustomGrid, и вызывайте его методы:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 TStringGridX(StringGrid1).MoveColumn(1, 3); 
end;
Source: Взято из http://forum.sources.ru
ID: 00603
----
Примечание от Vit: код можно написать значительно компактнее:
type TStringGridX = class(TStringGrid);
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 TStringGridX(StringGrid1).MoveColumn(1, 3); 
end;
ID: 00604
----
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Перестановка строки в StringGrid в другую позицию
Передвигает строку StringGrid из позиции FromRow в позицию ToRow, сдвигая остальные
Зависимости: Grids
Copyright: MBo
Дата: 28 апреля 2002 г.
***************************************************** }
procedure SGMoveRow(SG: TStringGrid; FromRow, ToRow: Integer);
var
 TempList: TStringList;
 i: Integer;
begin
 with SG do
 if (FromRow in [0..RowCount - 1]) and (ToRow in [0..RowCount - 1]) then
 begin
 TempList := TStringList.Create;
 TempList.Assign(Rows[FromRow]);
 if FromRow > ToRow then
 for i := FromRow downto ToRow + 1 do
 Rows[i].Assign(Rows[i - 1])
 else
 for i := FromRow to ToRow - 1 do
 Rows[i].Assign(Rows[i + 1]);
 Rows[ToRow].Assign(TempList);
 TempList.Free;
 end;
end;
Source: http://delphibase.endimus.com
ID: 01064
Как переносить базы данных между разными IB?

=== Как переносить базы данных между разными IB? ===
Как переносить базы данных между разными IB ? Например между Local IB и IB for Linux?
Для переноса нужно использовать операцию backup/restore, т.к. формат хранения данных для разных платформ разный. Переносить БД без backup/restore можно только в том случае, если у IB-источника и IB-приемника совпадает версия ODS - OnDisk Structure. Версию ODS можно увидеть в Server Manager после подсоединения к БД и вызову пункта меню Tasks/Database Statistics (Database Header, ODS version). Как правило, даже у одной и той же версии IB, но для разных операционных систем версия ODS разная.
Author: Дмитрий Кузьменко (http://www.ibase.ru)
ID: 02899
Category:Базы данных
Category:Interbase
Как пересоздать индексы?

=== Как пересоздать индексы? ===
procedure TForm1.Button4Click(Sender: TObject);
var
 aExclusive, aActive: Boolean;
begin
 with Table1 do
 begin
 aActive := Active;
 Close;
 aExclusive := Exclusive;
 Exclusive := True;
 Open;
 Check(DbiRegenIndexes(Table1.Handle));
 Close;
 Exclusive := aExclusive;
 Active := aActive;
 Check(DbiSaveChanges(Table1.Handle));
 end;
end;
As when calling any BDE API function, the BDE API wrapper unit BDE (for Delphi 1, the units DbiTypes, DbiErrs, and DbiProcs) must be referenced in the Uses section of the unit from which the call is to be made. The BDE API function DbiSaveChanges, used here, forces any data changes in memory buffer to be written to disk at that point.
Another way to handle this situation -- if you know at design-time all the indexes that will exist for the table -- would be to iterate through the items in the TIndexDefs object of the TTable component, delete each index (DeleteIndex method), and then add all needed indexes back (AddIndex method).
procedure TForm1.Button3Click(Sender: TObject);
var
 aName: string;
 i: Byte;
 aExclusive, aActive: Boolean;
begin
 with Table1 do
 begin
 aActive := Active;
 Close;
 aExclusive := Exclusive;
 Exclusive := True;
 IndexDefs.Update;
 i := IndexDefs.Count;
 while i > 0 do
 begin
 aName := IndexDefs.Items[i - 1].Name;
 DeleteIndex(aName);
 Dec(i);
 end;
 AddIndex(, 'MainField', [ixPrimary]);
 AddIndex('Field1', 'Field1', []);
 AddIndex('Field2', 'Field2', []);
 IndexDefs.Update;
 Exclusive := aExclusive;
 Active := aActive;
 Check(DbiSaveChanges(Table1.Handle));
 end;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02942
Category:Базы данных
Category:Paradox
Как пересчитать все вычисляемые поля (Calculated fields) без переоткрытия TDataSet?

=== Как пересчитать все вычисляемые поля (Calculated fields) без переоткрытия TDataSet? ===
 Resync([rmExact, rmCenter]);
Author: Nomadic 
Source: Взято с http://delphiworld.narod.ru
ID: 02562