nyuuzyou/wikis huggingface dataset:
Отображения величин в Watch List

=== Отображения величин в Watch List ===
В BP 7.0 возможно было регулировать форму отображения величин
в процессе отладки в окне "Watch List". Возможно ли такое в Delphi?
Такой эффект можно достичь используя следующие спецификации формата отображения (практически совпадающие с BP 7.0), которые указываются через запятую после идентификатора инспектируемой величины:
Символ 	Применяется к типу 	Функциональность
H или X	Integers 	Отображает целые величины в 16-ричном формате с префиксом 0x
C 	Char, strings 	Показывает специальные символы (ASCII 0..31). По умолчанию они отображаются в виде esc-последовательности (/n , /t , и т.п.)
D 	Integers 	Отображает целые величины в десятичном формате.
Fn 	Floating point 	Показывает n десятичных знаков (где n = 2..18, по умолчанию 7 )
nM 	All 	Дамп памяти, где n задает количество отображаемых байт памяти, начиная с адреса величины. По умолчанию каждый байт представляется двумя 16-ричными цифрами, но возможно также совместное использование nM с другими форматами.
P 	Pointers 	Отображает величину, как указатель в формате seg:ofs.
R 	Records, classes, objects	Показывает не только величины полей, но и сами поля, напрмер, как (X:2; Y:5) вместо (2, 5).
S 	Char, strings 	Показывает любые неотображаемые ASCII символы в виде #nn. Используется вместе с nM.
Author: StayAtHome
Source: http://forum.vingrad.ru
ID: 00053
Отобразить строку на определённую структуру

=== Отобразить строку на определённую структуру ===
type
 TEmployee = record 
 cNo: array [0..3] of Char; 
 cName: array [0..7] of Char; 
 end; 
 PEmployee = ^TEmployee; 
procedure ParseData; 
const 
 sData = '0001Mosquito'; 
var 
 sNo, sName: string; 
begin 
 with PEmployee(Pointer((@sData)^))^ do 
 begin 
 sNo := cNo; // sNo = '0001' 
 sName := cName; // sName = 'Mosquito' 
 end 
end;
Source: http://delphiworld.narod.ru/
ID: 00780
Отправка WinPopup сообщения через mailslots

procedure TForm1.Button1Click(Sender: TObject);
var
 MSHandle: THandle;
 MSMessage: array [0..2] ofString;
 ResultMsMessage: String;
 MSWrite: DWORD;
 ServerName: String;
begin
 ServerName := Edit1.Text; // Имя компьютера
 if ServerName = then
 ServerName := '*\';
 if ServerName[Length(ServerName)] <> '\' then
 ServerName := ServerName + '\';
 // Открываем на удаленном компьютере мэйслот для записи
 MSHandle := CreateFile(PChar('\\' + ServerName + 'mailslot\messngr'),
 GENERIC_WRITE, // or GENERIC_READ,
 FILE_SHARE_READ,
 nil,
 OPEN_EXISTING,
 FILE_ATTRIBUTE_NORMAL,
 0);
 if not Win32Check(MSHandle <> INVALID_HANDLE_VALUE) then Exit;
 // Подготавливаем сообщение
 MSMessage[0] := Edit2.Text; // От кого
 MSMessage[1] := Edit3.Text; // Кому
 MSMessage[2] := Memo1.Text; // Текст сообщение
 // Преобразование в DOS кодировку
 CharToOem(PChar(MSMessage[0]), PChar(MSMessage[0]));
 CharToOem(PChar(MSMessage[1]), PChar(MSMessage[1]));
 CharToOem(PChar(MSMessage[2]), PChar(MSMessage[2]));
 ResultMsMessage := MSMessage[0] + #0 + MSMessage[1] + #0 + MSMessage[2];
 // Пишем сообщение
 WriteFile(MSHandle, Pointer(PChar(ResultMsMessage))^, Length(ResultMsMessage), MSWrite, nil);
 Win32Check(MSWrite = Length(ResultMsMessage));
 CloseHandle(MSHandle);
end;
Author: Rouse_
Source: http://forum.sources.ru
ID: 03320
Category:Связь
Отправка email в Indy 10

Рабочий пример отправки Email через Indy с HTML в кодировке UTF-8 и вложениями файлов.
Используется Indy 10 + Lazarus 2.2.6
type
 TDummyEncode = class
 protected
 class procedure SetCharSet(var VHeaderEncoding: char; var VCharSet: string);
 end;
class procedure TDummyEncode.SetCharSet(var VHeaderEncoding: char; var VCharSet: string);
begin
 VCharSet := IdCharsetNames[idcs_UTF_8];
 VHeaderEncoding := 'B';
end;
function SendSmtpEmail(Recipients, Subject, HTMLBody: string;
 Attachments: TStringList; SMTPHost: string; SMTPPort: Word;
 Username, Password: string; UseSSL: Boolean): Boolean;
var
 SMTP: TIdSMTP;
 Message: TIdMessage;
 SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
 Builder: TIdMessageBuilderHtml;
 Attachment: TIdAttachmentFile;
 i: integer;
begin
 SMTP := TIdSMTP.Create(Application);
 Message := TIdMessage.Create(Application);
 Builder := TIdMessageBuilderHtml.Create;
 try
 // Настройка SMTP
 SMTP.Host := SMTPHost;
 SMTP.Port := SMTPPort;
 SMTP.Username := Username;
 SMTP.Password := Password;
 if UseSSL then
 begin
 SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(Application);
 SSLHandler.SSLOptions.Method := sslvSSLv23;
 SSLHandler.SSLOptions.Mode := sslmUnassigned;
 SSLHandler.SSLOptions.VerifyMode := [];
 SSLHandler.SSLOptions.VerifyDepth := 0;
 SMTP.IOHandler := SSLHandler;
 end;
 // Создание сообщения
 Message.From.Address := Username;
 Message.From.Text := Username;
 Message.Recipients.EMailAddresses := Recipients;
 Message.Subject := Subject;
 //Message.CharSet := 'utf-8';
 Message.OnInitializeISO := TDummyEncode.SetCharSet;
 Message.CharSet := IdCharsetNames[idcs_UTF_8];
 SMTP.UseTLS := utUseExplicitTLS;
 // Создание HTML-тела письма
 Builder.Html.Text := HTMLBody;
 Builder.HtmlCharSet := 'utf-8';
 // Добавление вложений
 if Attachments.Count> 0 then
 begin
 for i := 0 to Attachments.Count - 1 do
 begin
 if (FileExists(Attachments[i])) and (Attachments[i] <> EmptyStr) then
 begin
 Builder.Attachments.Add(Attachments[i]);
 end;
 end;
 end;
 // Построение сообщения
 Builder.FillMessage(Message);
 // Отправка сообщения
 SMTP.Connect;
 try
 SMTP.Send(Message);
 finally
 SMTP.Disconnect;
 end;
 finally
 SMTP.Free;
 Message.Free;
 Builder.Free;
 end;
end;
Author: Mikhail Tchervonenko
Source: https://t.me/Delphi_Lazarus
Category:Связь
Category:Электронная почта
Отправка email через Indy

function SendMail(const Address, Subject, MessageText: string): string;
var
 SMTP: TIdSMTP;
 MailMessage: TIdMessage;
 idSSLOpen: TIdSSLIOHandlerSocketOpenSSL;
begin
 Result := 'OK';
 try
 SMTP := TIdSMTP.Create(nil);
 try
 idSSLOpen := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
 try
 idSSLOpen.SSLOptions.Method := sslvSSLv23;
 idSSLOpen.SSLOptions.Mode := sslmUnassigned;
 SMTP.IOHandler := idSSLOpen;
 SMTP.UseTLS := utUseImplicitTLS;
 SMTP.Host := WebDataModule.MailHost;
 SMTP.Port := WebDataModule.MailPort;
 SMTP.Username := WebDataModule.MailLogin;
 SMTP.Password := WebDataModule.MailPass;
 MailMessage := TIdMessage.Create(nil);
 try
 MailMessage.OnInitializeISO := TDummyEncode.SetCharSet;
 MailMessage.CharSet := IdCharsetNames[idcs_UTF_8];
 MailMessage.ContentType := 'text/plain; charset=utf-8';
 MailMessage.From.Address := WebDataModule.MailFrom;
 MailMessage.Recipients.EMailAddresses :=
 Address + IfThen(WebDataModule.MailCopy <> , ';' + WebDataModule.MailCopy);
 MailMessage.Subject := Subject;
 MailMessage.Body.Text := MessageText;
 MailMessage.Date := Now;
 try
 try
 SMTP.Connect;
 except
 Exit('rsConnError');
 end;
 if WebDataModule.MailNeedAuthentication then
 begin
 SMTP.AuthType := TIdSMTPAuthenticationType(WebDataModule.MailAuthType);
 try
 if not SMTP.Authenticate then
 Exit('rsAuthError');
 except
 Exit('rsAuthError');
 end;
 end;
 try
 SMTP.Send(MailMessage);
 except
 Exit('rsSmtpError');
 end;
 finally
 if SMTP.Connected then
 SMTP.Disconnect;
 end;
 finally
 FreeAndNil(MailMessage);
 end;
 finally
 FreeAndNil(idSSLOpen);
 end;
 finally
 FreeAndNil(SMTP);
 end;
 except
 Exit('rsOtherError');
 end;
end;
type
 TDummyEncode = class
 protected
 class procedure SetCharSet(var VHeaderEncoding: char; var VCharSet: string);
 end;
class procedure TDummyEncode.SetCharSet(var VHeaderEncoding: char; var VCharSet: string);
begin
 VCharSet := IdCharsetNames[idcs_UTF_8];
 VHeaderEncoding := 'B';
end;
Author: Quisiariv
Category:Связь
Category:Электронная почта
Отправка email через synapse

function SendMail(const Address, Subject, MessageText: string): string;
var
 Msg: TMimeMess; // сообщение
 StringList: TStringList; // содержимое письма
 MIMEPart: TMimePart; // части сообщения (на будущее)
begin
 Result := 'OK';
 Msg := TMimeMess.Create; //создаем новое сообщение
 try
 StringList := TStringList.Create;
 try
 // Добавляем заголовки
 Msg.Header.Subject := Subject; // тема сообщения
 Msg.Header.From := WebDataModule.MailFrom; // имя и адрес отправителя
 Msg.Header.ToList.Add(); // имя и адрес получателя
 // создаем корневой элемент
 MIMEPart := Msg.AddPartMultipart('alternative', nil);
 StringList.Text := MessageText;
 Msg.AddPartText(StringList, MIMEPart);
 // Кодируем и отправляем
 Msg.EncodeMessage;
 if not SendToRaw(WebDataModule.MailFrom, Address, WebDataModule.MailHost, Msg.Lines,
 WebDataModule.MailLogin, WebDataModule.MailPass) then
 Result := 'CouldntSendMail';
 finally
 FreeAndNil(Msg);
 end;
 finally
 FreeAndNil(StringList);
 end;
end;
в SendToRaw раскомментить
// if you need support for upgrade session to TSL/SSL, uncomment next lines:
 // SMTP.AutoTLS := True;
// if you need support for TSL/SSL tunnel, uncomment next lines:
 // SMTP.FullSSL := True;
Author: Quisiariv
Category:Связь
Category:Электронная почта
Отрисовка битового образца

unit aplanes_;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
 TForm1 = class(TForm)
 procedure FormPaint(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
 sky, aplane: TBitMap; // битовые образы: небо и самолет
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
begin
 // создать битовые образы
 sky := TBitMap.Create;
 aplane := TBitMap.Create;
 // загрузить картинки
 sky.LoadFromFile('sky.bmp');
 aplane.LoadFromFile('aplane.bmp');
 Form1.Canvas.Draw(0, 0, sky); // отрисовка фона
 Form1.Canvas.Draw(20, 20, aplane); // отрисовка левого самолета
 aplane.Transparent := True;
 // теперь элементы рисунка, цвет которых совпадает с цветом
 // левой нижней точки битового образа, не отрисовываются
 Form1.Canvas.Draw(120, 20, aplane); // отрисовка правого самолета
 // освободить память
 sky.free;
 aplane.free;
end;
end.
ID: 03784
== См.также ==
* Самолет летит по небу
Category:Графика
Category:Bitmap
Отрисовка стрелки

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Отрисовка стрелки с заданными параметрами
// рисует стрелку с заданными параметрами
// X_Line, Y_Line - координаты "неподвижного" конца линии стрелки;
// Length_Line, Length_Arrow - длина линии и бокового ребра стрелки;
// Angle_Line, Angle_Arrow - углы между линией стрелки и горизонтальной
// осью и между линией стрелки и боковым ребром стрелки;
// IsAllTriangle - если True, то "подвижные" концы боковых рёбер стрелки
// соединяются отрезком прямой(и не рисуется высота равнобедренного треугольника стрелки);
// DrawSurface - поверхность на которой будет рисоваться стрелка
Зависимости: ничего неожиданного
Автор: Александр
Copyright: default
Дата: 14 февраля 2004 г.
***************************************************** }
procedure DrawArrow(X_Line, Y_Line, Length_Line, Length_Arrow: Integer;
 Angle_Line, Angle_Arrow: Extended;
 IsAllTriangle: Boolean; DrawSurface: TCanvas);
var
 XB, YB, XE, YE, XM, YM: Integer;
begin
 XB := Round(X_Line + Cos(Angle_Line) * Length_Line);
 YB := Round(Y_Line - Sin(Angle_Line) * Length_Line);
 XM := Round(XB - Cos(Angle_Arrow - Angle_Line) * Length_Arrow);
 YM := Round(YB - Sin(Angle_Arrow - Angle_Line) * Length_Arrow);
 XE := Round(XB + Sin(Angle_Arrow + Angle_Line - Pi / 2) * Length_Arrow);
 YE := Round(YB + Cos(Angle_Arrow + Angle_Line - Pi / 2) * Length_Arrow);
 DrawSurface.MoveTo(X_Line, Y_Line);
 if IsAllTriangle then
 begin
 DrawSurface.LineTo(Round((XM + XE) / 2), Round((YM + YE) / 2));
 DrawSurface.MoveTo(XB, YB);
 end
 else
 DrawSurface.LineTo(XB, YB);
 DrawSurface.LineTo(XM, YM);
 if IsAllTriangle then
 DrawSurface.LineTo(XE, YE)
 else
 DrawSurface.MoveTo(XE, YE);
 DrawSurface.LineTo(XB, YB)
end;
Author: Александр
Source: http://delphibase.endimus.com
ID: 03753
Category:Графика
Category:Рисование
Отрисовка элементов ListBox

=== Отрисовка элементов ListBox ===
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
 ListBox1: TListBox;
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 procedure ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
 S : String;
begin
 // Очистка
 ListBox1.Clear;
 S := 'C:\Windows\*.bmp';
 // Даем команду листбоксу чтобы он нашел все картинки в папке Windows
 // и занес их имена к себе
 ListBox1.Perform(LB_DIR, DDL_READWRITE, Longint(@S[1]));
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with (Control as TListBox).Canvas do
 begin
 // очищаем прямоугольник
 FillRect(Rect);
 // В зависимости от индекса - определяем цвет
 Font.Color := clBlack;
 case Index of
 0: Font.Color := clBlue;
 1: Font.Color := clRed;
 2, 4: Font.Color := clGreen;
 end;
 // Выводим текст
 TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
 end;
end;
end.
Author: Александр (Rouse_) Багель
Source: Взято из http://forum.sources.ru
ID: 00666
Отследить завершение работы, (перезагрузку, смену пользователя) в Windows.

=== Отследить завершение работы, (перезагрузку, смену пользователя) в Windows. ===
Очень часто мы сталкиваемся с проблемой, когда наша программа будучи запущенная в фоне и/или свёрнутая, например, в панель задач должна что-то сделать, когда Windows выключается, перезагружается или просто меняется пользователь.
Если мы не будем отслеживать такую ситуацию, то в худшем случае у нас могут просто потеряться какие-либо данные или Windows просто не сможет выполнить перезагрузку до конца. Ей будет мешать наша программа. Не нужно думать, что Windows перед перезагрузкой рассылает приложениям сообщения о закрытии, так чтобы у тех выполнились обработчкики TForm.onCloseQuery/onClose.
ОС Windows отсылает перед перезагрузкой, выключением или сменой пользователя сообщения WM_QUERYENDSESSION, а потом по его успешному завершению WM_ENDSESSION. Наше приложение должно поймать эти сообщения и отреагировать так чтобы дать понять, что мы согласны перезагружаться. В частности на сообщение WM_QUERYENDSESSION мы должны вернуть не 0:
 The WM_QUERYENDSESSION message is sent when the user chooses to end the Windows session or when an application calls the ExitWindows function. If any application returns zero, the Windows session is not ended. Windows stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.
Практически мы уже здесь можем завершить свою программу.
В случае если те действия, которые выполняются при наступлении перезагрузки не велики по величине времени их выполнения, можно не обрабатывать WM_QUERYENDSESSION, а обойтись просто сообещением WM_ENDSESSION. В параметре WParam этого сообщения поступает как раз тот результат, который мы вернули (или не вернули) из сообщения WM_QUERYENDSESSION:
 protected
 procedure IsWindowsShutDown(var Msg: TMessage); message WM_ENDSESSION;
procedure TForm1.IsWindowsShutDown(var Msg: TMessage);
begin
 inherited;
 if Msg.WParam = 1 then MainForm.Close; // выгружаем приложение
end;
Если нам нужно что-то сделать ещё (например удалить какой-либо файл или записать какую-нибудь информацию), применительно для вышеприведённого примера это можно сделать в обработчиках onCloseQuery/onClose формы.
Процедуру IsWindowsShutDown() мы должны описать в классе того окна, которое будет принимать данное сообщение т.е. формы.
Author: Song
Source: Взято из http://forum.sources.ru
ID: 02149
Отслеживаем позицию курсора в EditBox.

=== Отслеживаем позицию курсора в EditBox. ===
В форму добавляются TEditBox и TLabel, при этом TLabel постоянно показывает позицию курсора в элементе редактирования. 
procedure TForm1.Edit1Change(Sender: TObject); 
begin 
 CurPos := Edit1.SelStart; 
 Label1.Caption := IntToStr(CurPos); 
end; 
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 
begin 
 if Key = VK_LEFT then Dec(CurPos); 
 if Key = VK_RIGHT then Inc(CurPos); 
 Label1.Caption:= IntToStr(CurPos); 
end;
Source: Взято из http://forum.sources.ru
ID: 00530
Отслеживать переход мышки на компонент и уход ее

=== Отслеживать переход мышки на компонент и уход ее ===
{
The following unit is a visual component inherited of TImage, which has the
2 additional events OnMouseEnter and OnMouseLeave.
}
unit ImageEx;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls;
type
 TImageEx = class (TImage)
 private
 { Private declarations }
 FOnMouseLeave: TNotifyEvent;
 FOnMouseEnter: TNotifyEvent;
 procedure CMMouseEnter(var msg: TMessage);
 message CM_MOUSEENTER;
 procedure CMMouseLeave(var msg: TMessage);
 message CM_MOUSELEAVE;
 protected
 { Protected declarations }
 procedure DoMouseEnter; dynamic;
 procedure DoMouseLeave; dynamic;
 public
 { Public declarations }
 published
 { Published declarations }
 property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
 property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
 end;
procedure Register;
implementation
procedure Register;
begin
 RegisterComponents('Additional', [TImageEx]);
end;
{ TImageEx }
procedure TImageEx.CMMouseEnter(var msg: TMessage);
begin
 DoMouseEnter;
end;
procedure TImageEx.CMMouseLeave(var msg: TMessage);
begin
 DoMouseLeave;
end;
procedure TImageEx.DoMouseEnter;
begin
 if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TImageEx.DoMouseLeave;
begin
 if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01595
----
=== Получить активный элемент управления под курсором мышки ===
{ You may call this function in a global event procedure,
 linking as many components events to it as you need. }
function FindControlAtPos: TWinControl;
var
 Pt: TPoint;
begin
 GetCursorPos(Pt);
 Result := FindControl(WindowFromPoint(Pt));
end;
{ (Beispiel) Hier die allgemein gultige Procedure fur OnMouseUp.
 Die Behandlung von OnClick bleibt dabei erhalten:
 die Funktionalitat aus OnMouseUp kommt dazu. }
{ (example) There's the global proc for the OnMouseUp event.
 Note: OnClick keeps working, so you can "add" the OnMouseUp
 facility to no cost. }
procedure TForm1.GenericMouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 TWC: TWinControl;
begin
 TWC := FindControlAtPos;
 // what for a class !
 Showmessage('Here we are: ' + TWC.ClassName);
 // Let it blink...
 TWC.Visible := False;
 Sleep(150);
 TWC.Visible := True;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01596
Очень медленный доступ к таблице при первом обращении

=== Очень медленный доступ к таблице при первом обращении ===
Данная проблема возникает из-за того, что BDE вначале запрашивает базу данных для получения информации о таблице, прежде чем он начнет с ней работать. Как только появляется информация о таблице, она кэшируется и обращение к таблице во время всего сеанса (пока TDatabase.Connection имеет значение True) происходит практически мгновенно. Для того, чтобы использовать кэшируемую информацию и при последующем запуске приложения, в конфигурации BDE найдите необходимый псевдоним и установите
 BDE CACHE = TRUE
 BDE CACHE DIR = 'C:\temp'
или любой другой удобный каталог.
ПРИМЕЧАНИЕ: При любом изменении структуры таблицы Вам придется удалять кэш вручную. Имя файла, в котором хранится кэш, Вы можете узнать, посмотрев в любом текстовом редакторе файл SCache.INI.
Сборник Kuliba
Source: Взято из Советов по Delphi от Валентина Озерова
ID: 02592
Очистить переменную в оперативной памяти

=== Очистить переменную в оперативной памяти ===
If you want to erase a variable, that no other program can read it out of the memory anymore, just use this function:
ZeroMemory(Addr(yourVar), SizeOf(yourVar));
ZeroMemory(Addr(yourStr), Length(yourStr));
// ZeroMemory(Address of the variable, Size of the variable); 
Very usefull, if you asked for a password and you want, that nobody other can get it.
Language: en
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00824
Очистить ячейки в TStringGrid

=== Очистить ячейки в TStringGrid ===
procedure TForm1.Button1Click(Sender: TObject);
var
 i, k: Integer;
begin
 with StringGrid1 do
 for i := 0 to ColCount - 1 do
 for k := 0 to RowCount - 1 do
 Cells[i, k] := ;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01090
----
// Many times faster! 
procedure TForm1.Button2Click(Sender: TObject);
var
 I: Integer;
begin
 for I := 0 to StringGrid1.RowCount - 1 do
 StringGrid1.Rows[I].Clear();
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01091
Очистка корзины

=== Очистка корзины ===
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ShellAPI;
const
 SHERB_NOCONFIRMATION = $1;
 SHERB_NOPROGRESSUI = $2;
 SHERB_NOSOUND = $4;
type
 TForm1 = class(TForm)
 btnGetRecicleBinFileCount: TButton;
 btnEmptyRecicleBin: TButton;
 btnDelToReciclebin: TButton;
 procedure btnGetRecicleBinFileCountClick(Sender: TObject);
 procedure btnEmptyRecicleBinClick(Sender: TObject);
 procedure btnDelToReciclebinClick(Sender: TObject);
 end;
type
 TSHQueryRBInfo = packed record
 cbSize : DWORD;
 i64Size,
 i64NumItems : TLargeInteger;
 end;
 PSHQueryRBInfo = ^TSHQueryRBInfo;
 function SHEmptyRecycleBin(hwnd: HWND; pszRootPath: PChar;
 dwFlags: DWORD): HRESULT; stdcall;
 external 'shell32.dll' name 'SHEmptyRecycleBinA';
 function SHQueryRecycleBin (pszRootPath: PChar;
 var SHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
 external 'Shell32.dll' name 'SHQueryRecycleBinA'; 
var
 Form1: TForm1;
implementation
{$R *.dfm}
// Очистка корзины
procedure TForm1.btnEmptyRecicleBinClick(Sender: TObject);
var
 Err: HRESULT;
begin
 Err := SHEmptyRecycleBin(Handle, 'c:\', SHERB_NOSOUND);
 if Err <> S_OK then ShowMessage(SysErrorMessage(Err));
end;
end.
Пример работы с корзиной можно скачать здесь:
Author: Rouse_
Source: Взято из http://forum.sources.ru
ID: 01710
Очистка строки (символьное значение числа) от пробелов, нулей и точки

=== Очистка строки (символьное значение числа) от пробелов, нулей и точки ===
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Очистка строки (символьное значение числа) от пробелов, нулей и точки
Функция возвращает строку очищенную от символов: пробел, ноль, точка.
Зависимости: нет
Автор: Виталий, center_sapr@mnogo.ru, Львов
Copyright: Witek
Дата: 26 апреля 2002 г.
***************************************************** }
unit Unit2;
interface
function StrFl(st: string): string;
implementation
function StrFl(st: string): string;
label
 p1, p2, p3;
var
 poz: Byte;
 k: integer;
 stt: string;
begin
 k := Length(st);
 if k <= 1 then
 goto p2;
 p1:
 stt := Copy(st, 1, 1); { Очистка от пробелов }
 if stt = ' ' then
 begin
 st := Copy(st, 2, k - 1);
 k := k - 1;
 goto p1;
 end;
 stt := Copy(st, k, 1);
 if stt = ' ' then
 begin
 st := Copy(st, 1, k - 1);
 k := k - 1;
 goto p1;
 end;
 p3:
 poz := Pos('.', st); { Очистка от нулей }
 if poz = 0 then
 goto p2;
 stt := Copy(st, k, 1);
 if stt = '0' then
 begin
 st := Copy(st, 1, k - 1);
 k := k - 1;
 goto p3;
 end;
 if stt = '.' then { Очистка от точки }
 begin
 st := Copy(st, 1, k - 1);
 end;
 p2:
 StrFl := st;
end;
end.
//Пример результатов: 
//5.000 -> 5
//5.001 -> 5.001
//05.100 -> 05.1
Source: http://delphibase.endimus.com
ID: 00860