nyuuzyou/wikis huggingface dataset:
Как загрузить потоковые(stream) данные в WebBrowser не прибегая к открытию файла?

function TForm1.LoadFromStream(const AStream: TStream): HRESULT;
begin
 AStream.seek(0, 0);
 Result := (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
end;
Примечание от Vit
# В Uses добавить ActiveX
# Если в TWebBrowser ничего не загружено то код выдаёт Access Violation
Исправляется следующим образом:
function TForm1.LoadFromStream(const AStream: TStream): HRESULT;
begin
 AStream.Seek(0, soFromBeginning);
 WebBrowser1.Navigate('about:blank');
 Result := (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream));
end;
Перевод материала с сайта members.home.com/hfournier/webbrowser.htm
Author: Per Larsen
Author: Vit
Source: http://blackman.km.ru/myfaq/cont4.phtml
ID: 03454
Category:Связь
Category:WebBrowser
Как загрузить строковые данные в WebBrowser не прибегая к открытию файла?

Загрузите строку массив Variant, а затем запишите в документ (Document):
var
 v: Variant;
 HTMLDocument: IHTMLDocument2;
begin
 HTMLDocument := WebBrowser1.Document as IHTMLDocument2;
 v := VarArrayCreate([0, 0], varVariant);
 v[0] := HTMLString; // Это Ваша HTML строка
 HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
 HTMLDocument.Close;
end;
Перевод материала с сайта members.home.com/hfournier/webbrowser.htm
Source: http://blackman.km.ru/myfaq/cont4.phtml
ID: 03455
Category:Связь
Category:WebBrowser
Как загрузить юникоды в мемо?

=== Как загрузить юникоды в мемо? ===
procedure LoadUnicodeFile(const filename: string; strings: TStrings);
 procedure SwapWideChars(p: PWideChar);
 begin
 while p^ <> #0000 do
 begin
 p^ := WideChar(Swap(Word(p^)));
 Inc(p);
 end;
 end;
var
 ms: TMemoryStream;
 wc: WideChar;
 pWc: PWideChar;
begin
 ms := TMemoryStream.Create;
 try
 ms.LoadFromFile(filename);
 ms.Seek(0, soFromend);
 wc := #0000;
 ms.Write(wc, SizeOf(wc));
 pWC := ms.Memory;
 if pWc^ = #$FEFF then { normal byte order mark }
 Inc(pWc)
 else if pWc^ = #$FFFE then
 begin { byte order is big-endian }
 SwapWideChars(pWc);
 Inc(pWc);
 end
 else
 ; { no byte order mark }
 strings.Text := WideChartoString(pWc);
 finally
 ms.free;
 end;
end;
Использовать 
 LoadUnicodeFile(filename, memo1.lines);
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 00555
Как задать выражение по умолчанию для объекта TField

=== Как задать выражение по умолчанию для объекта TField ===
Это будет работать, если вы уже установили атрибуты поля и ассоциировали его с полем вашей таблицы. Если вы установили значение в Инспекторе Объектов, т.е. задали строку, не думайте, что это сработает во время выполнения приложения. Если вы попытаетесь во время прогона установить свойство TField.DefaultExpression примерно так:
 MyField.DefaultExpression := 'MyValue';
то это скомпилируется, но при создании в таблице новой записи, скажем, при щелчке на кнопке + в DBNavigator, значения по умолчанию вы не получите. Чтобы во время работы приложения все работало, код должен быть таким:
 MyField.DefaultExpression := MyValue;
В Инспекторе Объектов вам нужно просто поместить значение 'MyValue' (используя одинарные кавычки).
Source: Взято с http://delphiworld.narod.ru
ID: 02618
Как закрыть help при закрытии приложения?

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Application.HelpCommand(HELP_QUIT, 0);
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04545
----
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Winhelp(Handle, 'WINHELP.HLP', HELP_QUIT, 0);
 Action := caFree;
end;
ID: 04546
Category:Разработка приложений
Category:Справочная система
Как закрыть всплывающее меню в System Tray когда оно теряет фокус?

=== Как закрыть всплывающее меню в System Tray когда оно теряет фокус? ===
Иногда, при потере фокуса, всплывающее меню в System Tray при потере фокуса не закрывается. Поэтому, при обработке сообщений для всплывающего меню необходимо поместить окно на передний план и послать ему сообщение WM_NULL.
procedure TForm1.WndProc(var Msg: TMessage);
var
 p: TPoint;
begin
 case Msg.Msg of
 WM_USER + 1:
 case Msg.lParam of
 WM_RBUTTONDOWN:
 begin
 SetForegroundWindow(Handle);
 GetCursorPos(p);
 PopupMenu1.Popup(p.x, p.y);
 PostMessage(Handle, WM_NULL, 0, 0);
 end;
 end;
 end;
 inherited;
end;
Source: Взято из http://forum.sources.ru
ID: 01763
Как заменить данные в столбце компонента TDBGrid

=== Как заменить данные в столбце компонента TDBGrid ===
Нередко в колонке DBGrid нужно вывести не реальное значение, хранящееся в поле соответствующей таблицы, а другие данные, соответствующие имеющимся (например, символьную строку вместо ее числового кода). В этом случае также используется метод TextOut свойства Canvas компонента TDBGrid:
Соответствующий код для Delphi имеет вид:
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Column.FieldName = 'VenueNo' then
 with DBGrid1.Canvas do
 begin
 Brush.Color := clWhite;
 FillRect(Rect);
 if Table.FieldByName('VanueNo').Value = 1 then
 begin
 Font.Color := clRed;
 TextOut(Rect.Right - 2 - DBGrid1.Canvas.TextWidth('our vanue'),
 Rect.Top + 2, 'our vanue');
 end
 else
 TextOut(Rect.Right - 2 - DBGrid1.Canvas.TextWidth('other vanue'),
 Rect.Top + 2, 'other vanue');
 end;
end;
Еще один пример - использование значков из шрифтов Windings или Webdings в качестве подставляемой строки.
Соответствующий код для Delphi имеет вид:
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if Column.FieldName = 'VenueNo' then
 with DBGrid1.Canvas do
 begin
 Brush.Color := clWhite;
 FillRect(Rect);
 Font.name := 'Windings';
 Font.Size := -14;
 if Table.FieldByName('VanueNo').Value = 1 then
 begin
 Font.Color := clRed;
 TextOut(Rect.Right - 2 - DBGrid1.Canvas.TextWidth('J'),
 Rect.Top + 2, 'J');
 end
 else
 TextOut(Rect.Right - 2 - DBGrid1.Canvas.TextWidth('F'),
 Rect.Top + 2, 'F');
 end;
end;
Source: Взято с http://delphiworld.narod.ru
ID: 03061
Category:Базы данных
Category:DBGrid
Как заменить значение переменных для текста MS Word?

uses
 Office97; {or Office2000, OfficeXP, Office_TLB}
var
 VDoc, PropName, DocName: OleVariant;
 VDoc := Word.ActiveDocument;
 { ... }
{ Set a document property }
PropName := 'MyOpinionOfThisDocument';
VDoc.CustomDocumentProperties.Add(PropName, False, msoPropertyTypeString,
 'Utter drivel', EmptyParam);
{ Read a document property }
Caption := VDoc.CustomDocumentProperties[PropName].Value;
{ ... }
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04421
Category:COM
Category:MS Office
Как заменить строку в матрице

program Matrices;
{$APPTYPE CONSOLE}
uses
 SysUtils;
type
 TMatrixRow = Array of Double; {preferrable to Real}
 TMatrix = Array of TMatrixRow;
procedure MatrixExchangeRows(M: TMatrix; First, Second: Integer);
var
 Help: TMatrixRow;
begin
 if (First < 0) or (First > High(M)) or (Second < 0) or (Second > High(M)) then
 Exit; { or whatever you like. }
 { Only pointers are exchanged! }
 Help := M[First];
 M[First] := M[Second];
 M[Second] := Help;
end;
procedure MatrixWrite(M: TMatrix);
var
 Row, Col: Integer;
begin
 for Row := 0 to High(M) do
 begin
 for Col := 0 to High(M[Row]) do
 Write(M[Row, Col]:10:2);
 Writeln;
 end;
 Writeln;
end;
var
 Matrix: TMatrix;
 Row, Column: Integer;
begin
 Randomize;
 SetLength(Matrix, 4, 4);
 for Row := 0 to High(Matrix) do
 for Column := 0 to High(Matrix[Row]) do
 Matrix[Row, Column] := Random * 1000.0;
 MatrixWrite(Matrix);
 MatrixExchangeRows(Matrix, 1, 2);
 MatrixWrite(Matrix);
 Readln;
end.
Source: http://www.lmc-mediaagentur.de/dpool
ID: 03958
Category:Алгоритмы
Category:Матрицы
Как заменить текст в документе MS Word?

{
 This function starts a hidden word instance, opens a specified document "ADocument"
 and replaces (all) occurrences of "SearchString" with a specified "ReplaceString".
 The function is similar to the Delphi StringReplace() function.
}
uses
 ComObj;
// Replace Flags
type
 TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);
function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: string; Flags: TWordReplaceFlags): Boolean;
const
 wdFindContinue = 1;
 wdReplaceOne = 1;
 wdReplaceAll = 2;
 wdDoNotSaveChanges = 0;
var
 WordApp: OLEVariant;
begin
 Result := False;
 { Check if file exists }
 if not FileExists(ADocument) then
 begin
 ShowMessage('Specified Document not found.');
 Exit;
 end;
 { Create the OLE Object }
 try
 WordApp := CreateOLEObject('Word.Application');
 except
 on E: Exception do
 begin
 E.Message := 'Word is not available.';
 raise;
 end;
 end;
 try
 { Hide Word }
 WordApp.Visible := False;
 { Open the document }
 WordApp.Documents.Open(ADocument);
 { Initialize parameters}
 WordApp.Selection.Find.ClearFormatting;
 WordApp.Selection.Find.Text := SearchString;
 WordApp.Selection.Find.Replacement.Text := ReplaceString;
 WordApp.Selection.Find.Forward := True;
 WordApp.Selection.Find.Wrap := wdFindContinue;
 WordApp.Selection.Find.Format := False;
 WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
 WordApp.Selection.Find.MatchWholeWord := False;
 WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
 WordApp.Selection.Find.MatchSoundsLike := False;
 WordApp.Selection.Find.MatchAllWordForms := False;
 { Perform the search}
 if wrfReplaceAll in Flags then
 WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
 else
 WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
 { Save word }
 WordApp.ActiveDocument.SaveAs(ADocument);
 { Assume that successful }
 Result := True;
 { Close the document }
 WordApp.ActiveDocument.Close(wdDoNotSaveChanges);
 finally
 { Quit Word }
 WordApp.Quit;
 WordApp := Unassigned;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 Word_StringReplace('C:\Test.doc', 'Old String', 'New String', [wrfReplaceAll]);
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04414
Category:COM
Category:MS Office
Как записать CDR/CDRW?

=== Как записать CDR/CDRW? ===
К сожалению, реальных примеров пока не найдено, а литература в сети крайне скудна по этому поводу. Вот список линков по которым удалось хоть что-то найти:
* на torry есть компонент http://www.torry.net/vcl/filedrv/cd/xpburn.zip (только для WindowsXP) 
* http://www.rsdn.ru/forum/Message.aspx?mid=81732&only=1
* http://www.micro-magic.com/cdrecording.html
Убедительная просьба, если кто располагает информацией о записи на CD поделиться 
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01395
Как записать в BLOB поле большой текст (более 255)?

=== Как записать в BLOB поле большой текст (более 255)? ===
var
 S: TBlobStream;
 B: Pointer;
 c: Integer;
begin
 Table1.Edit;
 S := TBlobStream.Create(Table1BlobField as TBlobField, bmWrite); { кажется, так }
 try
 C := S.Write(B, C);
 Table1.Post;
 finally
 S.Destroy;
 end;
end;
или так
var
 S: TMemoryStream;
 B: pointer;
 C: integer;
begin
 S := TMemoryStream.Create;
 try
 Table1.Edit;
 S.Clear;
 S.SetSize(C);
 C := S.Write(B, C);
 (Table1BlobField as TBlobField).LoadFromStream(S);
 S.Clear;
 Table1.Post;
 finally
 S.Destroy;
 end;
end;
Source: Взято с http://delphiworld.narod.ru
ID: 02479
Как записать файл в Blob поле?

=== Как записать файл в Blob поле? ===
1) Через таблицу:
(Table1.FieldByName('ddd') as TBlobField).LoadFromFile('dddss');
(Для некоторых баз данных через BDE так можно загрузить не более 64k)
2) через параметры в запросе...
ADOquery1.SQL.Text := 'INSERT INTO myTable (a) VALUES (:b)';
ADOQuery1.Parameters.ParseSQL(ADOquery1.SQL.Text, True);
ADOQuery1.Parameters.ParamByName('b').LoadFromFile('MyFile');
ADOQuery1.ExecSQL;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02461
Как заполнить поля формы в MS Word?

uses
 ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
 WordApp: OLEvariant;
begin
 Screen.Cursor := crHourglass;
 try
 // Create Word Instance
 WordApp := CreateOleObject('Word.Application');
 except
 ShowMessage('Cannot start MS Word.');
 Screen.Cursor := crDefault;
 Exit;
 end;
 try
 // Open a Word Document
 WordApp.Documents.Add(Template := 'C:\TestDoc.doc');
 // Show Word
 WordApp.Visible := True;
 // Check if FormField exists and asign your text
 if WordApp.ActiveDocument.Bookmarks.Exists('YourFormFieldName') then
 WordApp.ActiveDocument.FormFields.Item('YourFormFieldName').Result := 'Your Text';
 finally
 WordApp := Unassigned;
 Screen.Cursor := crDefault;
 end;
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04413
Category:COM
Category:MS Office
Как заполнить форму и отправить на сервер?

Для того, чтобы отправить форму на сервер, необходимо:
1. Найти форму в исходном тексте страницы.
Для этого найти в исходном тексте страницы теги <form>...</form>
Например:
<form method=GET action=http://localhost/cgi-bin/mget?>
<input type=text name=name1 value="имя" size="40" maxlength="20">
<input type=text name=name2 value="фамилия" size="40" maxlength="20">
<input type=submit>
</form>
2. Определить метод, который используется для отправки данных. В указанном выше примере это "GET" - form method=GET
3. Найти поля, которые необходимо заполнить.
В примере это:
<input type=text name=name1 value="имя" size="40" maxlength="20">
<input type=text name=name2 value="фамилия" size="40" maxlength="20">
4. Используя компоненты для работы с протоколом TCP/IP, сформировать строку запроса.
Для определенности пусть это будет компонент TIdHTTP из пакета Indy, входящий в стандартный набор компонент Delphi.
----
Сформируем строку для отправки на сервер для нашего примера:
Пусть нам нужно отправить значения для полей: имя=Vasya, фамилия=Pupkin.
В этом случае запрос будет выглядеть так:
var
 s: String;
begin
 s := IdHTTP1.Get('http://localhost/cgi-bin/mget?name1=Vasya&name2=Pupkin')
В случае, если форма использует метод POST:
<form method=POST action=http://localhost/cgi-bin/mget?>
<input type=text name=name1 value="имя" size="40" maxlength="20">
<input type=text name=name2 value="фамилия" size="40" maxlength="20">
<input type=submit>
</form>
формируем запрос для отправки несколько по-другому:
var
 tL: TStringList;
 s: String;
begin
 tL := TStringList.Create;
 tL.Add('name1=Vasya');
 tL.Add('name2=Pupkin');
 try
 s := IdHTTP1.Post('http://localhost/cgi-bin/mget', tL);
 finally
 tL.Free;
 end;
Author: Демо
Source: http://forum.sources.ru
ID: 03584
Category:Связь
Category:Web
Как запретить Ctrl-Alt-Del?

=== Как запретить Ctrl-Alt-Del? ===
var 
 i : integer; 
begin 
 i := 0; 
 { запрещаем Ctrl-Alt-Del } 
 SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @i, 0); 
end. 
// необходим unit WinProcs
// для Alt-Tab: SPI_SETFASTTASKSWITCH 
Source: Взято из http://forum.sources.ru
ID: 01512
Как запретить всплывающее меню при нажатии правой кнопки мыши?

Перевод материала с сайта members.home.com/hfournier/webbrowser.htm
Вам необходимо включить интерфейс IDocHostUIHandler.
Для этого Вам понадобятся два файла: ieConst.pas и IEDocHostUIHandler.pas.
В методе ShowContextMenu интерфейса IDocHostUIHandler, необходимо изменить возвращаемое значение с E_NOTIMPL на S_OK.
После этого меню перестанет реагировать на правое нажатие кнопки мыши.
Добавьте два модуля, упомянутые выше в секцию Uses и добавьте следующий код:
var
 Form1: TForm1;
 FDocHostUIHandler: TDocHostUIHandler;
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
 FDocHostUIHandler := TDocHostUIHandler.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 FDocHostUIHandler.Free;
end;
procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
 pDisp: IDispatch; var URL: OleVariant);
var
 hr: HResult;
 CustDoc: ICustomDoc;
begin
 hr := WebBrowser1.Document.QueryInterface(ICustomDoc, CustDoc);
 if hr = S_OK then
 CustDoc.SetUIHandler(FDocHostUIHandler);
end;
Source: http://blackman.km.ru/myfaq/cont4.phtml
ID: 03453
Category:Связь
Category:WebBrowser
Как запретить кнопку close в любом окне?

=== Как запретить кнопку close в любом окне? ===
Следующий пример запрещает кнопку закрытия (и пункт "закрыть" (close) в системном меню) нужного нам окна (в данном случае Notepad).
procedure TForm1.Button1Click(Sender: TObject);
var
 hwndHandle: THANDLE;
 hMenuHandle: HMENU;
begin
 hwndHandle := FindWindow(nil, 'Untitled - Notepad');
 if (hwndHandle <> 0) then
 begin
 hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
 if (hMenuHandle <> 0) then
 DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
 end;
end;
Source: Взято из http://forum.sources.ru
ID: 02144
Как запретить перемещение формы?

=== Как запретить перемещение формы? ===
type
 TyourForm = class(TForm)
 private
 { Private declarations }
 procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
 end;
implementation
procedure TyourForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
 inherited;
 with Message do
 if Result = HTCAPTION then
 Result := HTNOWHERE;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 00511
Как запретить показ курсора в TEdit и ему подобных контролах

=== Как запретить показ курсора в TEdit и ему подобных контролах ===
Создайте своего потомка с обработчиками:
 procedure WMPaint(var Msg: TMessage); message WM_Paint;
 procedure WMSetFocus(var Msg: TMessage); message WM_SetFocus;
 procedure WMNCHitTest(var Msg: TMessage); message WM_NCHitTest;
в которых вызывайте:
 inherited;
 HideCaret(Handle);
ID: 02331
Как запросить страницу с сайта?

Это можно сделать с помощью TClientSocket.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ScktComp;
const Request: AnsiString = 'GET / HTTP/1.1' + #$D#$A +
 'Accept: application/vnd.ms-excel, application/msword, */*' + #$D#$A +
 'Accept-Language: en-us' + #$D#$A +
 'Accept-Encoding: gzip, deflate' + #$D#$A +
 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)' + #$D#$A +
 'Host: vingrad.com' + #$D#$A +
 'Connection: Keep-Alive' + #$D#$A + #$D#$A;
type
 TForm1 = class(TForm)
 Skt: TClientSocket;
 Button1: TButton;
 Memo1: TMemo;
 procedure Button1Click(Sender: TObject);
 procedure SktRead(Sender: TObject; Socket: TCustomWinSocket);
 procedure SktConnect(Sender: TObject; Socket: TCustomWinSocket);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 Skt.Host := 'vingrad.ru';
 Skt.Port := 80;
 Skt.Open;
end;
procedure TForm1.SktRead(Sender: TObject; Socket: TCustomWinSocket);
begin
 Memo1.Lines.Text := Memo1.Lines.Text + Socket.ReceiveText;
end;
procedure TForm1.SktConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
 Socket.SendText(Request);
end;
end.
Request - это запрос который посылает мой IE5.
В принципе, по протоколу HTTP он может ограничиваться:
 'GET / HTTP/1.1'+#13+#13
Если хотите запросить оределенный документ:
 'GET /<полный путь> HTTP/1.1'+#13+#13
Конечно, всегда можно воспользоваться готовыми компонентами.
Author: Fantasist
ID: 03546
----
{
Присоедините следующий обработчик к Вашему TClientSocket.
Он получает файл с сервера и помещает его в строковую переменную FText string variable. Однако он не убирает заголовок, который так же посылается вебсервером.
Не забудьте задать правильный адрес сервера в объекте Socket. Установите порт 80. А затем откройте его при помощи команды "Socket.Open;".
}
const
 WebPage = '/index.html';
var
 FText: string;
procedure TForm1.SocketWrite(Sender: TObject; Socket: TCustomWinSocket);
begin
 Socket.SendText('GET ' + Webpage + ' HTTP/1.0' + #10#10);
end;
procedure TForm1.SocketRead(Sender: TObject; Socket: TCustomWinSocket);
begin
 FText := FText + Socket.ReceiveText;
end;
procedure TForm1.SocketConnecting(Sender: TObject; Socket: TCustomWinSocket);
begin
 FText := ;
end;
procedure TForm1.SocketDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
{ --- }
{ ЗДЕСЬ ВЫ МОЖЕТЕ ОБРАБАТЫВАТЬ ВАШ FText !!! }
{ --- }
end;
procedure TForm1.SocketError(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
 ErrorCode := 0; { Ошибки игнорируем }
end;
Author: E.J.Molendijk
Source: http://forum.sources.ru
ID: 03547
Category:Связь
Category:Сокеты
Category:Web
Как запустить DTS из StoredProcedure

=== Как запустить DTS из StoredProcedure ===
 use master
 exec xp_cmdshell "DTSRun /S servername /U username /P password /N packagename"
Author: Akim
Source: Взято из http://forum.sources.ru
ID: 02789
----
1.
--©Drkb v.3(2007): www.drkb.ru
Exec master..xp_cmdshell '"C:\Program Files\Microsoft SQL Server\80\Tools\Binn\dtsrun.exe" /S'+@ServerName+' /U'+@SQLUserName+' /P'+@SQLPassword+' /N'+@DTSPackageName
2.
--©Drkb v.3(2007): www.drkb.ru
 Declare @retval int,
 @package int,
 @ServerName char(20),
 @LoadString varchar(8000)
 Set @ServerName=CONVERT(char(20), SERVERPROPERTY('servername'))
 Set @LoadString='LoadFromSQLServer("'+@ServerName+'", "'+@ServerLogin+'", "'+@ServerPassword+'", 256, , , ,"'+@DTSPackageName+'")'
 EXEC @retval = sp_OACreate 'DTS.Package', @package OUTPUT
 EXEC @retval = sp_OAMethod @package,@LoadString,NULL
 EXEC @retval = sp_OAMethod @package, 'Execute'
Author: Vit
ID: 02790
Category:Базы данных
Category:MS SQL Server
Как запустить другое приложение?

uses
 libc;
procedure TForm1.Button1Click(Sender: TObject);
var
 iPrg: Integer;
begin
 // Execute kcalc - A calculator for KDE
 iPrg := libc.system('kcalc');
 if iPrg = -1 then
 ShowMessage('Error executing your program');
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04619
Category:Kylix
Category:Linux
Как запустить и подождать завершения 2х процессов?

=== Как запустить и подождать завершения 2х процессов? ===
procedure HzChe;
var
 hProcess: array [0..1] of Cardinal;
 struc1: PSTARTUPINFO;
 struc2: PROCESS_INFORMATION;
begin
 if not CreateProcess(PChar('c:\PSTOLD.EXE'), nil, nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, struc1^, struc2) then 
 ShowMessage('Zhopa kakaya-to');
 hProcess[0] := struc2.hProcess;
 if not CreateProcess(PChar('c:\PSTOLD1.EXE'), nil, nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, struc1^, struc2) then 
 ShowMessage('Zhopa kakaya-to');
 hProcess[1] := struc2.hProcess;
 if WaitForMultipleObjects(2, @hProcess, True, INFINITE) = 1 then 
 ShowMessage (' vce, priehali' );
end;
P.S. То, что я понаписал нельзя считать цивильным кодом...просто демонстрация работы функции WaitForMultipleObjects (код позорный...просто жуть...) 
Author: Baa
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02063
Как запустить консольное приложение и перехватить вывод?

procedure ExecCmdine(const CmdLine: string; CmdResult: TStrings);
var
 Output: PIOFile;
 Buffer: PChar;
 TempString: string;
 Line: string;
 BytesRead: Integer;
const
 BufferSize: Integer = 1000;
begin
 Output := popen(PChar(CmdLine), 'r');
 GetMem(Buffer, BufferSize);
 if Assigned(Output) then
 try
 while feof(Output) = 0 do
 begin
 BytesRead := Libc.fread(Buffer, 1, BufferSize, Output);
 SetLength(TempString, Length(TempString)+BytesRead);
 memcpy(@TempString[length(TempString)-(BytesRead-1)], Buffer, BytesRead);
 while Pos(#10, TempString) > 0 do
 begin
 Line := Copy(TempString, 1, Pos(#10, TempString)-1);
 if CmdResult<>nil then CmdResult.Add(Line);
 TempString := copy(TempString, Pos(#10, TempString)+1, Length(TempString));
 end;
 end;
 finally
 Libc.pclose(output);
 wait(nil);
 FreeMem(Buffer,BufferSize);
 end;
end;
;Примечание: под отладчиком Kylix код может не работать. Надо запускать приложение не под Kylix для того чтобы удостовериться что код работает. Кроме того некоторые консольные приложения, типа top не совсем стандартно используют консоль, поэтому я наблюдала такое явление, что top можно запустить только если запускать готовое приложение в терминале.
Author: Vit
ID: 04625
Category:Kylix
Category:Linux