Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi Russian Knowledge Base 2.2, То что раньше было Delphist's FAQ 
:(
    Опции темы
dm9
Дата 11.11.2004, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Уже давал ссылку...
http://dmitry9.nm.ru/info/
И особенно
http://dmitry9.nm.ru/info/delphi_faq/begin.htm

Из пожеланий:
Хотелось бы нормальный поиск. Всегда приходится перебирать слова во всех падежах, так как нет возможности поиска только по части слова.
То есть, например, по "software microsoft internet" ищется десяток топиков, а по "icrosoft inter" ни одного. Но это, видимо, встроенная фича виндового просмотрщика chm... Сложно будет сделать такое?
PM MAIL ICQ   Вверх
Vit
Дата 11.11.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(dm9 @ 10.11.2004, 22:45)
Сложно будет сделать такое?


С chm никак


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dm9
Дата 11.11.2004, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Жалко... Значит, жду, пока закончится создание оболочки для DRKB в "Наших проектах" smile
PM MAIL ICQ   Вверх
Vit
Дата 11.11.2004, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Можно пойти путём тщательного составления ключевых слов для каждой статьи - только это огромная работа, всё руки никак не доходят


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
dm9
Дата 11.11.2004, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Не получится. Пусть есть слово "delphi".
Хочется, чтобы оно находилось по запросам:
d,e,l,p,h,i,de,el,lp,ph,hi,del,elp,lph,phi,delp и так далее. Нужен поиск по части слова.
Ну, сам понимаешь... Помню я, что читал когда-то статью и запомнил, что была там речь, скажем, о построении компонента, который умеет итерпретировать формулы. А звучать это могло как "Интерпретирование формул", "Интерпретация формулы" и ещё много как. Вот тут бы и ввести запрос "Интерпр & формул"... А нельзя, перебирай падежи...
Добавлено @ 17:59
Просто у нас поисковик по локальной сети по такому принципу построен, так что привык я к хорошей жизни smile Обычно делают либо тупой поиск, как сейчас сделано и в DRKB, и на форуме, иногда ещё окончания поисковик умеет перебирать... но это уже более интеллектуальная система, и такое не нужно, гораздо полезнее поиск по части слова...
Добавлено @ 18:00
Ну, в общем, идея понятна smile Это, так сказать, пожелание разработчикам оболочки к DRKB smile
PM MAIL ICQ   Вверх
Alex
Дата 12.11.2004, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Статья "Как поместить картинку из базы данных, например MsSQL, в компонент TIMAGE ?"
Пропущен 1 символ


Дублируется статья "Как получить цвет строки в HTML формате?" в разделах "Работа с HTML, клиентскими скриптами" и "Работа с цветами и палитрами"
Добавлено @ 01:46
Одно и тоже содержание имеют статьи "Изменение размеров колонок в StringGrid" и "Автоматическая ширина колонок в TStringGrid"
Добавлено @ 01:48
Статья "Кнопка или пункт меню выполняет другую функцию при нажатой кнопке shift"
Пропущен 1 символ



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
p0s0l
Дата 12.11.2004, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



WinAPI -> Процессы, потоки, память, задачи -> Как запустить программу и подождать ее завершения?
Тут две описки нашёл в последнем примере ( Fabrнcio Fadel Kammer ):
Вместо
cb := SizeOf(SUInfo);

надо так:
cb := SizeOf(StartInfo);

И где написано:
ExecAndWait( 'C:\windows\calc.exe', '', SH_SHOWNORMAL)
вместо SH_SHOWNORMAL надо SW_SHOWNORMAL
Добавлено @ 01:50
Как отправить стандартное виндузовское сообщение по IP адресу клиента ? (странно, но в DRKB этого нет...)
Код
function NetMessageBufferSend(servername: LPCWSTR; msgname: LPCWSTR;
 fromname: LPCWSTR; buf: Pointer; buflen: DWORD): DWORD; stdcall; external 'netapi32.dll' name 'NetMessageBufferSend';

function SendMessageToIP (const IP, msg : string) : DWORD;
begin
 Result := NetMessageBufferSend (nil, PWideChar(WideString(IP)), nil, PWideChar(WideString(msg)), Length(msg)*2)
end;

Пример использования:
Код
 SendMessageToIP('192.168.0.1', 'Test string');



--------------------
С уважением, г-н Посол.
PM   Вверх
Alex
Дата 12.11.2004, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Статью "Как вычислить IP-адрес по доменному имени" переименовать в "Как вычислить доменное имя по IP-адресу"


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
p0s0l
Дата 12.11.2004, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Математика - Алгоритмы работы с графикой - RGB -> CMYK
Математика - Алгоритмы работы с графикой - CMYK --> RGB
Эти ответы какие-то некомпилируемые, обрезанные...
Поэтому поводу я уже прислал нормальную версию:
Работа с графикой и мультимеда - Работа с цветами и палитрами
- Как преобразовать цвета RGB в CMYK и обратно


Имхо, старый вариант (первый) нужно удалить вообще - он только людей путает...

Добавлено @ 02:11
Получение IP-адреса и маски для всех сетевых интерфейсов.
Автор: Giannis Sampaziotis

Существует множество методов получения IP адреса компьютера. Но данный пример представляет наиболее корректный способ получения всех адресов, сетевых масок, broadcast адресов и статусов для всех интерфейсов включая циклический 127.0.0.1 - требует WinSock 2.
Совместимость: Delphi 3.х (или выше)
Это завершённый Delphi компонент. Для его использования достаточно вызвать :

EnumInterfaces(var s string): Boolean;
которая вернёт строку, разделённую CRLF и содержащую всё, нужную нам информацию.

Код
unit USock;

interface

uses Windows, Winsock;

{
 Если Вы поместите строку результатов в wide TMEMO (в его свойство memo.lines.text)
 то никаких результатов не увидите.

 Тестировалось на Win98/ME/2K, 95 OSR 2 и NT service
 pack #3 , потому что используется WinSock 2 (WS2_32.DLL)
}

function EnumInterfaces(var sInt: string): Boolean;

{ функция WSAIOCtl импортируется из Winsock 2.0 - Winsock 2 доступен }
{ только в Win98/ME/2K и 95 OSR2, NT srv pack #3 }

function WSAIoctl(s: TSocket; cmd: DWORD; lpInBuffer: PCHAR; dwInBufferLen:
 DWORD;
 lpOutBuffer: PCHAR; dwOutBufferLen: DWORD;
 lpdwOutBytesReturned: LPDWORD;
 lpOverLapped: POINTER;
 lpOverLappedRoutine: POINTER): Integer; stdcall; external 'WS2_32.DLL';

{ Константы взятые из заголовка C файлов }

const SIO_GET_INTERFACE_LIST = $4004747F;
 IFF_UP = $00000001;
 IFF_BROADCAST = $00000002;
 IFF_LOOPBACK = $00000004;
 IFF_POINTTOPOINT = $00000008;
 IFF_MULTICAST = $00000010;

type sockaddr_gen = packed record
   AddressIn: sockaddr_in;
   filler: packed array[0..7] of char;
 end;

type INTERFACE_INFO = packed record
   iiFlags: u_long; // Флаги интерфейса
   iiAddress: sockaddr_gen; // Адрес интерфейса
   iiBroadcastAddress: sockaddr_gen; // Broadcast адрес
   iiNetmask: sockaddr_gen; // Маска подсети
 end;

implementation

{-------------------------------------------------------------------
1. Открываем WINSOCK
2. Создаём сокет
3. Вызываем WSAIOCtl для доступа к сетевым интерфейсам
4. Для каждого интерфейса, получаем IP, MASK, BROADCAST, статус
5. Разделяем строку символом CRLF  
6. Конец :)
--------------------------------------------------------------------}

function EnumInterfaces(var sInt: string): Boolean;
var s: TSocket;
 wsaD: WSADATA;
 NumInterfaces: Integer;
 BytesReturned, SetFlags: u_long;
 pAddrInet: SOCKADDR_IN;
 pAddrString: PCHAR;
 PtrA: pointer;
 Buffer: array[0..20] of INTERFACE_INFO;
 i: Integer;
begin
 result := true;                                // Инициализируем переменную
 sInt := '';

 WSAStartup($0101, wsaD);                      // Запускаем WinSock
                                               // Здесь можно дабавить различные обработчики ошибки :)

 s := Socket(AF_INET, SOCK_STREAM, 0);          // Открываем сокет
 if (s = INVALID_SOCKET) then exit;

 try                                            // Вызываем WSAIoCtl
   PtrA := @bytesReturned;
   if (WSAIoCtl(s, SIO_GET_INTERFACE_LIST, nil, 0, @Buffer, 1024, PtrA, nil,
     nil)
     <> SOCKET_ERROR)
     then
   begin                                        // Если OK, то определяем количество существующих интерфейсов

     NumInterfaces := BytesReturned div SizeOf(INTERFACE_INFO);

     for i := 0 to NumInterfaces - 1 do        // Для каждого интерфейса
     begin
       pAddrInet := Buffer[i].iiAddress.addressIn;            // IP адрес
       pAddrString := inet_ntoa(pAddrInet.sin_addr);
       sInt := sInt + ' IP=' + pAddrString + ',';
       pAddrInet := Buffer[i].iiNetMask.addressIn;            // Маска подсети
       pAddrString := inet_ntoa(pAddrInet.sin_addr);
       sInt := sInt + ' Mask=' + pAddrString + ',';
       pAddrInet := Buffer[i].iiBroadCastAddress.addressIn;  // Broadcast адрес
       pAddrString := inet_ntoa(pAddrInet.sin_addr);
       sInt := sInt + ' Broadcast=' +  pAddrString + ',';

       SetFlags := Buffer[i].iiFlags;
       if (SetFlags and IFF_UP) = IFF_UP then
         sInt := sInt + ' Interface UP,'                    // Статус интерфейса up/down
       else
         sInt := sInt + ' Interface DOWN,';

       if (SetFlags and IFF_BROADCAST) = IFF_BROADCAST then  // Broadcasts
         sInt := sInt + ' Broadcasts supported,'              // поддерживает или
       else                                                  // не поддерживается
         sInt := sInt + ' Broadcasts NOT supported,';

       if (SetFlags and IFF_LOOPBACK) = IFF_LOOPBACK then    // Циклический или
         sInt := sInt + ' Loopback interface'
       else
         sInt := sInt + ' Network interface';                  // нормальный

       sInt := sInt + #13#10;                                // CRLF между каждым интерфейсом
     end;
   end;
 except
 end;
//
// Закрываем сокеты
//
 CloseSocket(s);
 WSACleanUp;
 result := false;
end;

end.


(тестил - работает)



Добавлено @ 02:13


Как сделать TEdit с правосторонним или центральным выравниваем текста ?

Можно вместо TEdit использовать TMemo:
Код
procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Alignment := taRightJustify;
 Memo1.MaxLength := 24;
 Memo1.WantReturns := false;
 Memo1.WordWrap := false;
end;

procedure MultiLineMemoToSingleLine(Memo : TMemo);
var
 t : string;
begin
 t := Memo.Text;
 if Pos(#13, t) > 0  then begin
   while Pos(#13, t) > 0 do
    delete(t, Pos(#13, t), 1);
   while Pos(#10, t) > 0 do
    delete(t, Pos(#10, t), 1);
   Memo.Text := t;
 end;
end;

procedure TForm1.Memo1Change(Sender: TObject);
begin
 MultiLineMemoToSingleLine(Memo1);
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 MultiLineMemoToSingleLine(Memo1);
end;


Взято с bdn.borland.com


--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 12.11.2004, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Системные функции и WinAPI - Работа с железом - Мышка/клавиатура - Мышка - Перемещение контролов мышкой во время выполнения приложения?
Как в этом ответе показано - работает, но можно проще:
Код
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if ssCtrl in Shift then begin
   ReleaseCapture;
   SendMessage(Button1.Handle, WM_SYSCOMMAND, 61458, 0);
 end;
end;

Если сделать таким способом, то эффект будет немного другой - теперь мышь не сможет уйти за пределы формы - хорошо это или плохо - решать программисту...

Взято с bdn.borland.com

PS: вопрос, имхо, мало связан с железом, лучше бы его в раздел VCL перенести: VCL - Перетаскивание объектов, Drag and Drop, Docking


Добавлено @ 02:45

Как узнать, какое значение AutoInc-поля будет в Paradox-таблице ?

Код
function GetAutoInc(const FileName : string) : LongInt;
var MyStream : TFileStream;
begin
 MyStream := TFileStream.Create(FileName, fmOpenread + fmShareDenyNone);
 MyStream.Seek(73, soFromBeginning);
 MyStream.ReadBuffer(Result, 4);
 MyStream.Free;
end;


Взято с bdn.borland.com

(я бы добавил, что в случае работы с TTable, надо делать FlushBuffers:
Код
Table1.FlushBuffers;
NextAutoInc := GetAutoInc(Table1.TableName);
)


Добавлено @ 02:46

Как изменить громкость MediaPlayer ?
(в DRKB нет, но на форуме спрашивали...)

Код
uses
 MPlayer, MMSystem;

const
 MCI_SETAUDIO = $0873;
 MCI_DGV_SETAUDIO_VOLUME = $4002;
 MCI_DGV_SETAUDIO_ITEM = $00800000;
 MCI_DGV_SETAUDIO_VALUE = $01000000;
 MCI_DGV_STATUS_VOLUME = $4019;

type
 MCI_DGV_SETAUDIO_PARMS = record
   dwCallback: DWORD;
   dwItem: DWORD;
   dwValue: DWORD;
   dwOver: DWORD;
   lpstrAlgorithm: PChar;
   lpstrQuality: PChar;
 end;

type
 MCI_STATUS_PARMS = record
   dwCallback: DWORD;
   dwReturn: DWORD;
   dwItem: DWORD;
   dwTrack: DWORD;
 end;

procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);
 { Volume: 0 - 1000 }
var
 p: MCI_DGV_SETAUDIO_PARMS;
begin
 { Volume: 0 - 1000 }
 p.dwCallback := 0;
 p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
 p.dwValue := Volume;
 p.dwOver := 0;
 p.lpstrAlgorithm := nil;
 p.lpstrQuality := nil;
 mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
   MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));
end;

function GetMPVolume(MP: TMediaPlayer): Integer;
var  
 p: MCI_STATUS_PARMS;
begin
 p.dwCallback := 0;
 p.dwItem := MCI_DGV_STATUS_VOLUME;
 mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));
 Result := p.dwReturn;
 { Volume: 0 - 1000 }
end;

Взято с Torry's Delphi Pages


--------------------
С уважением, г-н Посол.
PM   Вверх
Vit
Дата 12.11.2004, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Спасибо огромное! Все отзывы попадут в следующую версию!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Cheba
Дата 12.11.2004, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Не плохо было бы еще changelog включить. То есть что нового появилось по сравнению с предыдущей версией.

Это сообщение отредактировал(а) Cheba - 12.11.2004, 17:15
PM MAIL ICQ   Вверх
Vit
Дата 12.11.2004, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Cheba @ 12.11.2004, 08:15)
Не плохо было бы еще changelog включить. То есть что нового появилось по сравнению с предыдущей версией.



Делаю!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Alex
Дата 13.11.2004, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Статья "Как предотвратить появление login dialog?" строчку "Database1.Connected := tr" заменить на "Database1.Connected := true;"


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Alex
Дата 15.11.2004, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Текст статьи "Сохранение параметров шрифта в INI-файле" заменить на содержание топика http://forum.vingrad.ru/index.php?showtopi...=0&#entry255304
Добавлено @ 00:48
Я бы добавил статьи:

1) Как открыть папку с уже выбранным файлом наподобие кнопки "найти объект"?


ShellExecute(Handle, nil, 'explorer.exe', '/e, Пупь к папке, /select, Имя файла', Путь к папке ОБЯЗАТЕЛЬНО, SW_RESTORE);

EXPLORER.EXE [/n] [/e] [,/ROOT,OBJECT] [[,/SELECT],SUBOBJECT]

Если EXPLORER.EXE вызывается без последующих параметров или с ключом /e, утилита Windows Explorer запускается точно так, как при ее вызове из Меню запуска. Если в строке имеются другие параметры, а ключ /e не используется, то на вашем "рабочем столе" открывается указанная папка. Когда нужная вам папка уже открыта, EXPLORER.EXE не станет открывать второй экземпляр - если только не установлен ключ /n.
Ключ /ROOT задает верхний уровень отображения папок на дереве утилиты Explorer. По умолчанию ROOT соответствует папке Desktop (т. е. всему "рабочему столу"), куда включены все файлы вашей машины (папка My Computer - "Мой компьютер") и вашей сети (папка Network Neighborhood - "Соседи по сети"). Чтобы изменить установку по умолчанию, необходимо к подстроке /ROOT добавить параметр OBJECT, который является именем конкретной папки (становящейся корнем). Включение параметра SUBOBJECT заставит Explorer открыться на соответствующей вложенной папке, расположенной ниже уровня ROOT; если SUBOBJECT не задан, то начальной (верхней) папкой останется ROOT. Ключ /SELECT позволяет в качестве SUBOBJECT вместо папки использовать файл, но без возможности применять символы-заменители (* и ?).

Имена файлов в командной строке утилиты Explorer могут быть полными UNC-именами (Universal Naming Convention - универсальное соглашение по именованию файлов), т. е. содержащими полный путь, что обеспечивает доступ к сетевым ресурсам, расположенным вне локальных дисков.

2) TWebBrowser в BeforeNavigate2, если посмотреть на PostData, увидем строку типа "????????", а как нормальную получить?

Код

function VariantArrayToStream(VarArray: OleVariant): TStream;
var
 pLocked: Pointer;
begin
 Result:= TMemoryStream.Create;
 if VarIsEmpty(VarArray) or VarIsNull(VarArray) then Exit;
 Result.Size:= VarArrayHighBound(VarArray, 1) - VarArrayLowBound(VarArray, 1) + 1;
 pLocked:= VarArrayLock(VarArray);
 try
   Result.Write(pLocked^, Result.Size);
 finally
   VarArrayUnlock(VarArray);
   Result.Position:= 0;
 end;
end;

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
 Headers: OleVariant; var Cancel: WordBool);
var
 stream: TStream;
begin
 stream:= VariantArrayToStream(PostData);
 try
   Memo1.Lines.LoadFromStream(stream);
 finally
   stream.Free;
 end;
end;

Добавлено @ 00:51
3) Как определить, что приложение минимизировано?
Код

 with Application do if (MainForm <> nil) and (MainForm.Visible) and IsWindowVisible(MainForm.Handle) then
   {Приложение не минимизировано}
 else
   {Приложение минимизировано}



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Страницы: (11) Все « Первая ... 8 9 [10] 11 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.