nyuuzyou/wikis huggingface dataset:
Avoiding server side locking (including DEADLOCK)

=== Avoiding server side locking (including DEADLOCK) ===
What can I do to help avoid server side locking (including DEADLOCK)
problems when working with Microsoft SQL Server (DBLIB) and Sybase
SQL Server (DBLIB)?
The following suggestions may help you tune your application and
server. The server side suggestions may not apply to all server
and database installations.
From the client application you may want to take greater control
over the size of results sets (this may mean using TQueries),
minimize the length of transactions (usually not an issue if the
SQLPASSTHRU MODE is set to ...AUTOCOMMIT), and only open dbaware
controls when necessary to help minimize resource drain on the
server and, possibly in this case, deadlock potential.
The means by which the BDE selects data from each of the supported
servers does not make assumptions about how each server chooses
to ensure data integrity.
Delphi/BDE suggestions:
Work with smaller result sets (TQueries, server views, etc.)
also see above form more info.
Check the SQL Links MSSQL Driver "TDS Packet Size" param
making sure that it is set to, at least, 4096.
Minimize the length of transactions.
Investigate creating appropriate indexes.
Filter results before opening a dataset or use tqueries
(live or otherwise) to limit the number of rows selected.
Investigate using the BDE SQL PASSTHRU MODE parameter
"NOT SHARED" (please see BDEADMIN.HLP and BDE32.HLP for
addtional information on the SQL PASSTHRU MODE parameter)
Please note:
 BDE/SQL Links 4.01 will not only detect and raise a deadlock
 error but it will "reset" its database transaction state when
 it detects an MSSQL error 1205. It is not necessary to rollback
 the explicit transaction (Database1.rollback) after the
 deadlock has been detected.
 The error 1205 signals to the client that the server has
 "resolved" a deadlock and chosen one of the users to end the
 deadlock. This user's transaction is automatically rolled back.
 Please refer to the MS SQL Server documentation for more
 information on deadlock detection and server error 1205.
MS SQL and Sybase Server topics: (the following is by no means a
comprehensive list. Please check your Sybase and MS SQL Server
docs for tips on optimizing your server and databases)
Create indexes on the remote tables where possible (the
server may require more locks for unindexed tables.)
TEXT and IMAGE columns can take up more pages (columns
can be omitted from a SELECT statement if working with TQueries
whose REQUEST LIVE property is false)
page sizes on the server can be adjusted to better match
expected row sizes (this can help prevent the server from locking
adjacent rows.)
The server will create a table lock if the LOCK ESCALATION
level is reached (part of sp_configure)
Please also see:
 MS SQl Server documentation (printed or Books Online)
 If using TQueries:
 TABLOCKX
 UPDLOCK
For more information on the options above:
 Analyzing locks Topic
 (also see Database Developer's Companion Errata)
ID: 02406
BCD → String

=== BCD --> String ===
function BCDToNumString(const inStr: string): string;
 procedure UnPack(ch: Char; var ch1, ch2: Char);
 begin
 ch1 := Chr((Ord(ch) and $F) + $30);
 ch2 := Chr(((Ord(ch) shr 4) and $F) + $30);
 Assert((ch1 >= '0') and (ch1 <= '9'));
 Assert((ch2 >= '0') and (ch2 <= '9'));
 end;
var
 i: Integer;
begin
 SetLength(Result, Length(inStr) * 2);
 for i := 1 to Length(inStr) do
 UnPack(inStr[i], Result[2 * i - 1], Result[2 * i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 S1, S2: string;
begin
 S1 := '15151515151515151515';
 S2 := NumStringToBCD(S1);
 memo1.lines.add('S1: ' + S1);
 memo1.lines.add('Length(S2): ' + IntToStr(Length(S2)));
 memo1.lines.add('S2 unpacked again: ' + BCDToNumString(S2));
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 00163
BDE: Несколько SQL-запросов одним махом

=== BDE: Несколько SQL-запросов одним махом ===
BDE такую возможность не поддерживает, но есть компонент в библиотеке RxLib - TSQLScript (соответственно и в JVCL - TJvSQLScript), поставляются они в исходниках, и переделать их на любой другой доступ проще-простого. Компонент делает парсинг SQL и выполняет несколько SQL запросов.
Author: Петрович
Source: Взято из http://forum.sources.ru
ID: 02633
BDE Error 2B04 Too many open files

=== BDE Error 2B04 Too many open files ===
Откройте утилиту "BDE Administrator" и выберите правую вкладку "Configuration". В ней откройте раздел "System" и кликните на элементе "INIT". Затем задайте значение "MaxFileHandles" на правой стороне (макс. открытых файлов, по умолчанию 48).
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02575
BEEP для дельфи, который работает, как в TP

=== BEEP для дельфи, который работает, как в TP ===
BEEP, для дельфи, который работает, как в B.Pascal 7.0
Я применяю следующий код, однако он работает только под Win9x/me
(Под WinNT/2000/XP вы можете использовать Beep(Tone, Duration)
- задавать тон и продолжительность звучания). 
procedure Sound(Freq : Word);
 var B : Byte;
begin 
 if Freq > 18 then
 begin
 Freq := Word(1193181 div LongInt(Freq));
 B := Byte(GetPort($61)); 
 if (B and 3) = 0 then
 begin
 SetPort($61, Word(B or 3));
 SetPort($43, $B6);
 end; 
 SetPort($42, Freq);
 SetPort($42, Freq shr 8);
 end;
end; 
procedure NoSound;
 var Value: Word;
begin 
 Value := GetPort($61) and $FC;
 SetPort($61, Value);
end; 
procedure SetPort(address, Value:Word);
 var bValue: byte;
begin 
 bValue := trunc(Value and 255);
 asm
 mov dx, address
 mov al, bValue
 out dx, al
 end;
end; 
function GetPort(address:word):word;
var bValue: byte;
begin 
 asm
 mov dx, address
 in al, dx
 mov bValue, al
 end;
 GetPort := bValue;
end;
Source: http://forum.vingrad.ru
ID: 00076
BIN → Byte

=== BIN --> Byte ===
function BinStrToByte(a_sBinStr: string): byte;
var
 i: Integer;
begin
 Result := 0;
 for i := 1 to Length(a_sBinStr) do
 Result := (Result shl 1) or Byte(a_sBinStr[i] = '1');
end;
Source: http://delphiworld.narod.ru/
ID: 00944
BIN → Integer

=== BIN --> Integer ===
function BinToInt(Value: string): Integer;
var
 i, iValueSize: Integer;
begin
 Result := 0;
 iValueSize := Length(Value);
 for i := iValueSize downto 1 do
 if Value[i] = '1' then Result := Result + (1 shl (iValueSize - i));
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00939
----
{by Andre Fritzsche}
unit BinConvert;
interface
 //Wandelt Bytewert (Value) zu Binarwert und trennt mit Splitter Hi- und Lo-Bits 
function ToBin(Value: Byte; Splitter: Char): string; overload;
 //Wandelt Wordwert (Value) zu Binarwert und trennt mit Splitter Hi- und Lo-Byte 
function ToBin(Value: Word; Splitter: Char): string; overload;
 //Wandelt Binarwert (String) zu Zahl (Cardinal) 
function BinTo(Value: string): Cardinal;
implementation
{------------------------------------------------------------------------------}
function ToBin(Value: Byte; Splitter: Char): string;
var
 val, bit, intX: Byte;
begin
 val := Value;
 for intX := 0 to 7 do
 begin //Alle 8 Bits durchlaufen 
 bit := 48; // 48 (='0') zu bit 
 val := val shr 1; // Value um 1 Bit nach rechts verschieben 
 asm
 adc bit,0 // CarryFlag zu bit addieren 
 end;
 if intX = 4 then Result := Splitter + Result;
 Result := Chr(bit) + Result; // zu Result hinzufugen 
 end;
end;
{------------------------------------------------------------------------------}
function ToBin(Value: Word; Splitter: Char): string;
begin
 Result := ToBin(Byte(Hi(Value)), Splitter) + Splitter + ToBin(Byte(Lo(Value)), Splitter);
end;
{------------------------------------------------------------------------------}
function BinTo(Value: string): Cardinal;
var
 intX, PosCnt: Byte;
begin
 Result := 0;
 PosCnt := 0;
 for intX := Length(Value) - 1 downto 0 do // zeichen von rechts durchlaufen
 begin
 case Value[intX + 1] of // prufen, ob 0 oder 1 
 '0': Inc(PosCnt); // bei 0 nur Pos-Zahler erhohen 
 '1':
 begin // bei 1 Bit an Position einfugen 
 Result := Result or (1 shl PosCnt);
 Inc(PosCnt); // und Zahler erhohen 
 end;
 end;
 end;
end;
{------------------------------------------------------------------------------}
end.
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00942
BLOBFIELD как BITMAP

=== BLOBFIELD как BITMAP ===
=== Сохраняем Bitmap в поле dbase с именем Icon. Icon представляет собой двоичное Blob-поле. ===
procedure SaveBitmapToTable();
var
 IconStream: TMemoryStream;
begin
 IconStream := TMemoryStream.Create;
 Image1.Picture.Icon.SaveToStream(IconStream);
 (Table1.FieldByName('Icon') as TBlobField).LoadFromStream(IconStream);
 Table1.Post;
 IconStream.Free;
end;
=== Читаем Bitmap в Timage из поля dbase с именем Icon. ===
procedure LoadBitmapFromTable();
var
 IconStream: TMemoryStream;
begin
 IconStream := TMemoryStream.Create;
 (Table1.FieldByName('Icon') as TBlobField).SaveToStream(IconStream);
 { что бы что-нибудь записать, необходимо установить позицию потока в ноль! }
 IconStream.Position := 0;
 Appointment.IconImage.Picture.Icon.LoadFromStream(IconStream);
 IconStream.Free;
end;
Надеюсь это поможет, поскольку найти информацию в справочной системе по этой теме практически невозможно. Чтобы сделать это, я перепробовал множество способов. Я пробовал использовать TBlobField и TBlobStream, но они не смогли мне помочь (может быть из-за убогой документации borland?).
Source: Взято с http://delphiworld.narod.ru
ID: 02474
BMP в DIB

Если файл хранится в формате BMP, как мне преобразовать его в DIB и как затем отобразить?
Это не тривиально, но помочь нам смогут функции GetDIBSizes и GetDIB из модуля GRAPHICS.PAS. Приведу две процедуры: одну для создания DIB из TBitmap и вторую для его освобождения:
{ Преобразование TBitmap в DIB }
procedure BitmapToDIB(Bitmap: TBitmap;
 var BitmapInfo: PBitmapInfo;
 var InfoSize: Integer;
 var Bits: Pointer;
 var BitsSize: LongInt);
begin
 BitmapInfo := nil;
 InfoSize := 0;
 Bits := nil;
 BitsSize := 0;
 if not Bitmap.Empty then
 try
 GetDIBSizes(Bitmap.Handle, InfoSize, BitsSize);
 GetMem(BitmapInfo, InfoSize);
 Bits := GlobalAllocPtr(GMEM_MOVEABLE, BitsSize);
 if Bits = nil then
 raise
 EOutOfMemory.Create('Не хватает памяти для пикселей изображения');
 if not GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapInfo^, Bits^) then
 raise Exception.Create('Не могу создать DIB');
 except
 if BitmapInfo <> nil then
 FreeMem(BitmapInfo, InfoSize);
 if Bits <> nil then
 GlobalFreePtr(Bits);
 BitmapInfo := nil;
 Bits := nil;
 raise;
 end;
end;
{ используйте FreeDIB для освобождения информации об изображении и битовых указателей }
procedure FreeDIB(BitmapInfo: PBitmapInfo;
 InfoSize: Integer;
 Bits: Pointer;
 BitsSize: LongInt);
begin
 if BitmapInfo <> nil then
 FreeMem(BitmapInfo, InfoSize);
 if Bits <> nil then
 GlobalFreePtr(Bits);
end;
Создаем форму с TImage Image1 и загружаем в него 256-цветное изображение, затем рядом размещаем TPaintBox. Добавляем следующие строчки к private-объявлениям вашей формы:
 { Private declarations }
 BitmapInfo : PBitmapInfo ;
 InfoSize : Integer ;
 Bits : Pointer ;
 BitsSize : LongInt ;
Создаем нижеприведенные обработчики событий, которые демонстрируют процесс отрисовки DIB:
procedure TForm1.FormCreate(Sender: TObject);
begin
 BitmapToDIB(Image1.Picture.Bitmap, BitmapInfo, InfoSize, Bits, BitsSize);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 FreeDIB(BitmapInfo, InfoSize, Bits, BitsSize);
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
 OldPalette: HPalette;
begin
 if Assigned(BitmapInfo) and Assigned(Bits) then
 begin
 with BitmapInfo^.bmiHeader, PaintBox1.Canvas do
 begin
 OldPalette := SelectPalette(Handle,
 Image1.Picture.Bitmap.Palette,
 False);
 try
 RealizePalette(Handle);
 StretchDIBits(Handle, 0, 0, PaintBox1.Width, PaintBox1.Height,
 0, 0, biWidth, biHeight, Bits,
 BitmapInfo^, DIB_RGB_COLORS,
 SRCCOPY);
 finally
 SelectPalette(Handle, OldPalette, True);
 end;
 end;
 end;
end;
Это поможет вам сделать первый шаг. Единственное, что вы можете захотеть, это создание собственного HPalette на основе DIB, вместо использования TBitmap и своей палитры. Функция с именем PaletteFromW3DIB из GRAPHICS.PAS как раз этим и занимается, но она не объявлена в качестве экспортируемой, поэтому для ее использования необходимо скопировать ее исходный код и вставить его в ваш модуль.
Source: http://delphiworld.narod.ru
ID: 04266
Category:Конвертация
BMP в EMF

// Converts a Bitmap to a Enhanced Metafile (*.emf)
function bmp2emf(const SourceFileName: TFileName): Boolean;
var
 Metafile: TMetafile;
 MetaCanvas: TMetafileCanvas;
 Bitmap: TBitmap;
begin
 Metafile := TMetaFile.Create;
 try
 Bitmap := TBitmap.Create;
 try
 Bitmap.LoadFromFile(SourceFileName);
 Metafile.Height := Bitmap.Height;
 Metafile.Width := Bitmap.Width;
 MetaCanvas := TMetafileCanvas.Create(Metafile, 0);
 try
 MetaCanvas.Draw(0, 0, Bitmap);
 finally
 MetaCanvas.Free;
 end;
 finally
 Bitmap.Free;
 end;
 Metafile.SaveToFile(ChangeFileExt(SourceFileName, '.emf'));
 finally
 Metafile.Free;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 bmp2emf('C:\TestBitmap.bmp');
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04265
Category:Конвертация
BMP в EMF (Enhanced Metafile)

// Converts a Bitmap to a Enhanced Metafile (*.emf)
function bmp2emf(const SourceFileName: TFileName): Boolean;
var
 Metafile: TMetafile;
 MetaCanvas: TMetafileCanvas;
 Bitmap: TBitmap;
begin
 Metafile := TMetaFile.Create;
 try
 Bitmap := TBitmap.Create;
 try
 Bitmap.LoadFromFile(SourceFileName);
 Metafile.Height := Bitmap.Height;
 Metafile.Width := Bitmap.Width;
 MetaCanvas := TMetafileCanvas.Create(Metafile, 0);
 try
 MetaCanvas.Draw(0, 0, Bitmap);
 finally
 MetaCanvas.Free;
 end;
 finally
 Bitmap.Free;
 end;
 Metafile.SaveToFile(ChangeFileExt(SourceFileName, '.emf'));
 finally
 Metafile.Free;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 bmp2emf('C:\TestBitmap.bmp');
end;
Source: http://www.swissdelphicenter.ch
ID: 04270
Category:Конвертация
BMP в JPG

uses
 Jpeg, ClipBrd;
// converts a bitmap, the graphic of a TChart for example, to a jpeg
procedure TfrmMain.ConvertBMP2JPEG;
var
 jpgImg: TJPEGImage;
begin
 // copy bitmap to clipboard
 chrtOutputSingle.CopyToClipboardBitmap;
 // get clipboard and load it to Image1
 Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,
 ClipBoard.GetAsHandle(cf_Bitmap), 0);
 // create the jpeg-graphic
 jpgImg := TJPEGImage.Create;
 // assign the bitmap to the jpeg, this converts the bitmap
 jpgImg.Assign(Image1.Picture.Bitmap);
 // and save it to file
 jpgImg.SaveToFile('TChartExample.jpg');
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04269
== См. также ==
* JPG в BMP
Category:Конвертация
BMP в RTF

function BitmapToRTF(pict: TBitmap): string;
var
 bi, bb, rtf: string;
 bis, bbs: Cardinal;
 achar: ShortString;
 hexpict: string;
 I: Integer;
begin
 GetDIBSizes(pict.Handle, bis, bbs);
 SetLength(bi, bis);
 SetLength(bb, bbs);
 GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^);
 rtf := '{\rtf1 {\pict\dibitmap0 ';
 SetLength(hexpict, (Length(bb) + Length(bi)) * 2);
 I := 2;
 for bis := 1 to Length(bi) do
 begin
 achar := IntToHex(Integer(bi[bis]), 2);
 hexpict[I - 1] := achar[1];
 hexpict[I] := achar[2];
 Inc(I, 2);
 end;
 for bbs := 1 to Length(bb) do
 begin
 achar := IntToHex(Integer(bb[bbs]), 2);
 hexpict[I - 1] := achar[1];
 hexpict[I] := achar[2];
 Inc(I, 2);
 end;
 rtf := rtf + hexpict + ' }}';
 Result := rtf;
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04271
Category:Конвертация
BMP в WMF

procedure ConvertBMP2WMF(const BMPFileName, WMFFileName: TFileName);
var
 MetaFile: TMetafile;
 Bitmap: TBitmap;
begin
 Metafile := TMetaFile.Create;
 Bitmap := TBitmap.Create;
 try
 Bitmap.LoadFromFile(BMPFileName);
 with MetaFile do
 begin
 Height := Bitmap.Height;
 Width := Bitmap.Width;
 Canvas.Draw(0, 0, Bitmap);
 SaveToFile(WMFFileName);
 end;
 finally
 Bitmap.Free;
 MetaFile.Free;
 end;
end;
Использование:
ConvertBMP2WMF('c:\mypic.bmp', 'c:\mypic.wmf')
Source: http://forum.sources.ru
ID: 04272
----
procedure TForm1.Button1Click(Sender: TObject);
var
 m: TMetaFile;
 mc: TMetaFileCanvas;
 b: TBitmap;
begin
 m := TMetaFile.Create;
 try
 b := TBitmap.Create;
 try
 b.LoadFromFile('C:\1.bmp');
 m.Height := b.Height;
 m.Width := b.Width;
 mc := TMetaFileCanvas.Create(m, 0);
 try
 mc.Draw(0, 0, b);
 finally
 mc.Free;
 end;
 finally 
 b.Free;
 end;
 m.SaveToFile('C:\1.emf');
 finally
 m.Free;
 Image1.Picture.LoadFromFile('C:\1.emf');
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 04273
== См. также ==
* WMF в BMP
Category:Конвертация
Bin → Dec

=== Bin -> Dec ===
function BinToInt(const Value: string): Integer;
var
 i, strLen: Integer;
begin
 Result := 0;
 strLen := Length(Value);
 for i := 1 to strLen do
 begin
 if Value[i] = '1' then
 Result := Result or (1 shl (strLen - i))
 else
 Result := Result and not (1 shl (strLen - i));
 end;
end;
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00221
Bitmap без формы

Как мне загрузить изображение (BMP) и отобразить это на рабочем столе без использования формы? (Я хочу отображать это из DLL).
Существует один способ сделать это: создать холст TCanvas, получить контекст устройства для рабочего стола и назначить его дескриптору холста. После рисования на холсте десктоп отобразит ваше творение. Вот пример:
var
 DesktopCanvas: TCanvas;
begin
 DesktopCanvas := TCanvas.Create;
 try
 DesktopCanvas.Handle := GetDC(0);
 try
 DesktopCanvas.MoveTo(0, 0);
 DesktopCanvas.LineTo(Screen.Width, Screen.Height);
 finally
 ReleaseDC(0, DesktopCanvas.Handle);
 DesktopCanvas.Handle := 0;
 end;
 finally
 DesktopCanvas.Free;
 end;
end;
Вы можете создать TBitmap и загрузить в него BMP-файл. Единственная гнусная вещь может произойти, если вы используете изображение с 256-цветной палитрой при работе в режиме с 256 цветами. Обойти это препятствие можно так: создать форму без границ и заголовка, установить ее высоту и ширину в ноль, поместить на нее компонент TImage и загрузить в него необходимое изображение. VCL реализует для вас нужную палитру.
Author: Mike Scott 
Source: http://delphiworld.narod.ru
ID: 03774
Category:Графика
Category:Bitmap
Bitmap в StringGrid ячейке

=== Bitmap в StringGrid ячейке ===
В обработчике события OnDrawCell элемента StringGrid поместите следующий код: 
with (Sender as TStringGrid) do
 with Canvas do
 begin
 Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
 end;
Используйте метод Draw() или StretchDraw() класса TCanvas. Image1 - это TImage с предварительно загруженным в него bitmap-ом. 
Source: http://delphiworld.narod.ru/
ID: 01039
----
Bitmap в StringGrid ячейке.

В обработчике события OnDrawCell элемента StringGrid поместите следующий код:
with (Sender as TStringGrid) do
 with Canvas do
 begin
 {...}
 Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
 {...}
 end;
Используйте метод Draw() или StretchDraw() класса TCanvas. Image1 - это TImage с предварительно загруженным в него bitmap-ом.
Source: http://delphiworld.narod.ru/
ID: 01039
Category:Графика
Category:Bitmap
Category:StringGrid
Byte-поля Paradox

=== Byte-поля Paradox ===
Что за магия при записи в поле Paradox Byte? По этому поводу в документации ничего не сказано.
Есть 2 пути получить доступ к данным в TBytesField.
Просто вызовите метод GetData, передавая ему указатель на буфер, где сам буфер должен иметь размер, достаточный для хранения данных:
procedure SetCheckBoxStates;
var
 CBStates: array[1..13] of Byte;
begin
 CBStateField.GetData(CBStates);
 { Здесь обрабатываем данные... }
end;
Для записи значений вы должны использовать SetData.
Используйте свойство Value, возвращающее вариантный массив байт (variant array of bytes):
procedure SetCheckBoxStates;
var
 CBStates: Variant;
begin
 CBStates := CBStateField.Value;
 { Здесь обрабатываем данные... }
end;
Первый метод, вероятно, для вас будет легче, поскольку вы сразу докапываетесь до уровня байт. Запись данных также получится сложнее, поскольку вам нужно будет работать с variant-методами типа VarArrayCreate и др.
Source: Взято с http://delphiworld.narod.ru
ID: 02959
Category:Базы данных
Category:Paradox
Byte → BIN

=== Byte --> BIN ===
function ByteToBinStr(a_bByte: byte): string;
var
 i: integer;
begin
 SetLength(Result, 8);
 for i := 8 downto 1 do
 begin
 Result[i] := chr($30 + (a_bByte and 1));
 a_bByte := a_bByte shr 1;
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 00945
CUR в BMP

procedure TForm1.Button1Click(Sender: TObject);
var
 hCursor: LongInt;
 Bitmap: TBitmap;
begin
 Bitmap := TBitmap.Create;
 Bitmap.Width := 32;
 Bitmap.Height := 32;
 hCursor := LoadCursorFromFile('test.cur');
 DrawIcon(Bitmap.Canvas.Handle, 0, 0, hCursor);
 Bitmap.SaveToFile('test.bmp');
 Bitmap.Free;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04274
Category:Конвертация
CheckBox → DBGrid

=== CheckBox в DBGrid ===
procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);
var
 DrawFlags: Integer;
begin
 Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
 DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);
 DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
 if Checked then
 DrawFlags := DrawFlags or DFCS_CHECKED;
 DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end; 
На событие OnDrawColumnCell повесьте вызов процедуры DrawGridCheckBox(): 
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Column.FieldName = 'WEIGHT' then // Модифицируйте под себя
 if Column.Field.AsInteger > 10 then
 DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
 else
 DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;
Кроме этого, для скрытия текста в ячейках с CheckBox-ом от отображения значения при вводе с клавиатуры определите реакцию на событие OnColumnEnter: 
procedure TfrmMain.DBGrid1ColEnter(Sender: TObject);
begin
 with TDBGrid(Sender) do
 if SelectedField.FieldName = 'Weight' then // Модифицируйте под себя
 Options := Options - [dgEditing]
 else
 Options := Options + [dgEditing]
end;
Source: Взято с http://delphiworld.narod.ru
ID: 00388
Converting 16bit resource to 32bit

=== Converting 16bit resource to 32bit ===
If you have the original source file (.rc) then you can simply recompile the .rc file to a .res file using the Borland Resource Command Line Compiler (brcc32.exe) located in the Delphi/C++ Builders bin directory. If you only have a .res file to work with, you will need to use a quality resource compiler/decompiler such as Borland's Resource Workshop. Versions of the Borland's Resource Workshop later than 4.5 can extract, compile, and decompile both 16 and 32 bit resource files from a variety of sources including .res, .exe, .dll, drv, and .cpl files. The Borland Resource Workshop version 4.5 ship with the Borland RAD Pack product line
ID: 02160
CopyFile для Linux

function CopyFile(Org, Dest: string): Boolean;
var
 Source, Target: TFileStream;
begin
 Result := False;
 try
 try
 Source := TFileStream.Create(Org, fmShareDenyNone or fmOpenRead);
 try
 Target := TFileStream.Create(Dest, fmOpenWrite or fmCreate);
 Target.CopyFrom(Source, Source.Size);
 Result := True;
 finally
 Target.Free;
 end;
 finally
 Source.Free;
 end;
 except
 end;
end;
Author: Vit
ID: 04624
Category:Файловая система
Category:Linux