Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi

Автор: OdesitVadim
Дата сообщения: 10.02.2006 15:05
Вот процедурка, которой сам пользуюсь

Код:
procedure GetOSInfo;
var
Platform: string;
BuildNumber: Integer;
begin
case Win32Platform of
VER_PLATFORM_WIN32_WINDOWS:
begin
Platform := 'Windows 95';
BuildNumber := Win32BuildNumber and $0000FFFF;
end;
VER_PLATFORM_WIN32_NT:
begin
Platform := 'Windows NT';
BuildNumber := Win32BuildNumber;
end;
else
begin
Platform := 'Windows';
BuildNumber := 0;
end;
end;
if
(Win32Platform=VER_PLATFORM_WIN32_WINDOWS)or(Win32Platform=VER_PLATFORM_WIN32_NT) then
begin
if Win32CSDVersion='' then
OS.Caption := Format('%s %d.%d (Build %d)', [Platform, Win32MajorVersion,
Win32MinorVersion, BuildNumber])
else
OS.Caption := Format('%s %d.%d (Build %d: %s)', [Platform,
Win32MajorVersion, Win32MinorVersion, BuildNumber, Win32CSDVersion]);
end
else
OS.Caption := Format('%s %d.%d', [Platform, Win32MajorVersion,
Win32MinorVersion])
end;
Автор: junik
Дата сообщения: 10.02.2006 15:36
OdesitVadim

Спасиб !
Для 2003 сервера NT 5.2 показывает.
Автор: nick444
Дата сообщения: 10.02.2006 18:12
У меня вопрос для знающих людей: поставил я на машину с ХР дельфи7. Все бы ничего -проги компиллируются, а когда запускаю, дельфи виснет (перестает отвечать). Можно ли это лечить, если- да,то как?
Автор: dyr farot
Дата сообщения: 10.02.2006 18:33
проблема может быть в чем угодно -- начиная от банального вируса и заканчивая пиратским дистрибутивом
Автор: Larry
Дата сообщения: 11.02.2006 08:31
junik, можно использовать Lenin Modules (lenininc.com) - это модули для Delphi, написанные на API. В них имеется функция определения версии Windows. Вот константы BuildNumber:
Цитата:
490 : OSV:='95';
// 950 : OSV:='95 Original;
1033 : OSV:='XP 64-Bit Edition SPR';
1111 : OSV:='95 OSR 2';
1212 : OSV:='95 OSR 2.1';
1214 : OSV:='95 OSR 2.5';
1381 : OSV:='NT';
1691 : OSV:='98 Release Candidate 0';
1708..1720 : OSV:='98 Beta';
1946 : OSV:='2000 Beta 3';
1998 : OSV:='98 Original';
2072 : OSV:='2000 Release Candidate 1';
2120 : OSV:='98 SE Release Candidate 1';
2151 : OSV:='2000';
2183 : OSV:='2000 Professional RC3';
2195 : OSV:='2000 Professional';
2222 : OSV:='98 Second Edition';
2296 : OSV:='XP Beta 1';
2348..2363 : OSV:='Millennium Edition Beta';
2419..2491 : OSV:='XP Beta 2';
2500..2517 : OSV:='XP Release Candidate 1';
2526 : OSV:='XP Release Candidate 2';
2600..2601 : OSV:='XP Professional';
3000 : OSV:='Millennium Edition';
3683 : OSV:='Loghorn XP m3 Beta';
3790 : OSV:='Windows 2003'; //Enterprise
4015 : OSV:='Loghorn Alpha Preview 3';
Автор: MasterKungLao
Дата сообщения: 11.02.2006 12:58
да скачал я давно, спасибо конечно, но неужели нельзя проще? неохото снифер в итак навороченную прогу всовывать! темболее что широковещательный кадр! тоесть фильтр сетевухи его пропускает! его нужно всеголиш считать из буфера сетевухи, но как в делфи это зделать?...
Автор: Konstantin555Xaker
Дата сообщения: 11.02.2006 17:44
Как найти окно с названием "Служба сообщений"??? [D6, WinXP]

Для этого я писал:


Код: function TForm1.GetText(WindowHandle: hwnd): string;
var
txtLength: integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength(buffer, txtlength);
sendmessage(WindowHandle, wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s,s1:Integer;
begin
s:=FindWindow(nil,'Служба сообщений');
if s<>0 then
begin
edit1.Text:='Найдено!';
s1:=FindWindowEx(s,0,'label',nil);
if s1<>0 then
memo1.Text:=GetText(s);
end else
edit1.Text:='';
end;
Автор: smus811
Дата сообщения: 12.02.2006 07:43
Подскажите, пожалуйста, как сделать, чтоб запрос к БД Paradox стал регистроНЕзависимым. Спасибо

Добавлено:
Ещё как можно вывести полный путь текущей директории(проекта)??

Добавлено:
А нашёл - GetCurrentDir function !!
Автор: RomanTim
Дата сообщения: 12.02.2006 13:53
Konstantin555Xaker
Во-первых заголовок окна имеет в конце пробел, во-вторых тект имеет класс не Label, а Static
Вот так работает:

Код:
var
h1: HWND;
h2: HWND;
s: string;
begin
h1 := FindWindow(nil, 'Служба сообщений ');
if h1 <> 0 then begin
h2 := FindWindowEx(h1, 0, 'Static', nil);
if h2 <> 0 then begin
SetLength(s, GetWindowTextLength(h2)+1);
GetWindowText(h2, PChar(s), Length(s));
Label1.Caption := s;
end;
end;
end;
Автор: Konstantin555Xaker
Дата сообщения: 12.02.2006 14:54
Огромное спасибо! Всё заработало!!!

Где можно прочитать информацию про существование классов?
То есть какие классы существуют, кроме Label, Static?
Автор: ArtemiyUO
Дата сообщения: 13.02.2006 06:50
smus811
путь откуда запущен экзешник можно получить
extractfilepath(application.exename)
Konstantin555Xaker
для исследования окон и процессов (что бы узнать какой класс и т.д.) юзай spy++ или WinSight.
Автор: RomanTim
Дата сообщения: 13.02.2006 07:01
Konstantin555Xaker
Про классы окон можешь почитать в MSDN - RegisterClass и так далее...

Для Delphi-приложений класс окна контрола (наследник TWinControl) обычно называется так же как и класс компонента, а TLabel окном вообще не является - его содержание рисуется прямо по Canvas-у родителя
Автор: YuRRiX
Дата сообщения: 13.02.2006 08:23
Помогите с проблемой:
На удаленной машине крутится объект. Мне необходимо к нему подключится. Насколько я помню, это должно делаться процедурой:
__________________________________________
CreateObject('ObjectName','ServerName'):CLSID;
-----------------------------------------------------------

но почему-то не делается... помогите...
Автор: RostY
Дата сообщения: 13.02.2006 11:07
Попробуй

function CreateRemoteComObject(const MachineName: WideString; const ClassID: TGUID): IUnknown;
Автор: Vitus_Bering
Дата сообщения: 13.02.2006 12:06
Как добавить элемент в TShellListView? Есть AddItem, но непонятно как с ним работать.
Автор: RomanTim
Дата сообщения: 13.02.2006 12:18
Vitus_Bering
Если он сделан подобно стандартному TListView, то

Код:
with ShellListView.Items.Add do begin
Caption := 'Item1';
...
end;
Автор: Fktrc
Дата сообщения: 13.02.2006 13:03

Цитата:
И ещё обрати нимание: строка коннекта к серверу FB/IB должна иметь вид Server:Disk:\Path\filename.gbd причём Disk:\Path\filename.gbd - расположение файла БД относительно сервера
А если на сервере прописан алиас к базе, то и реального пути не надо. Строка будт вот такой <hostname>:<aliasname>. Это чтоб посторонние чуваки не знали, где собсно файл хранится.
Автор: Vitus_Bering
Дата сообщения: 13.02.2006 14:36
RomanTim
Спасибо за совет, но этот вариант добавляет лишь Caption.
Нужно добавить 'полноценный элемент', т.е. ссылку на файл, который бы открывался, копировался и т.п. в компоненте ShellListView.
Автор: RomanTim
Дата сообщения: 13.02.2006 15:01
Vitus_Bering
Ты лучше спроси в ветке про компоненты - все-таки это не родной делфийский, а там возможно кто-то с ним и работал...
Самого контрола нет - попробовать более специфичные вещи не могу.
Автор: junik
Дата сообщения: 13.02.2006 15:41
Larry

О, спасибо за информацию!
Не знал про эту библиотеку.
Автор: Konstantin555Xaker
Дата сообщения: 13.02.2006 16:15
ArtemiyUO

Цитата:
для исследования окон и процессов (что бы узнать какой класс и т.д.) юзай spy++ или WinSight.

WinSight - где достать или хотя бы spy++? А то ссылок на закачку так и не нашёл
Автор: vshersh
Дата сообщения: 13.02.2006 16:16
Привет All!

Кто-нибудь пишет приложение в связке MySQL+MyDAC+Delphi ?

Какая версия MyDAC при этом используется и есть ли какие-нибудь глобальные жалобы на MyDAC?


Автор: YuRRiX
Дата сообщения: 13.02.2006 16:26
function CreateRemoteComObject(const MachineName: WideString; const ClassID: TGUID): IUnknown;

пасиба, подключился.

А как теперь с ним работать?.. Переменная IUnknown - это интерфейс объекта. А как работать с самим объектом (если можно сылку на пример)?

Примного благодарен.
Автор: vshersh
Дата сообщения: 13.02.2006 16:32
Konstantin555Xaker
Так они же с Delphi и MSVS соответственно идут в комплекте!

YuRRiX
Нужно преобразовывать к требуемому интерфейсу и работать уже с твоим интерфейсом
статья о работе с ком-объектами см. например: http://www.interface.ru/borland/decom_1.htm
Автор: JbBaD
Дата сообщения: 13.02.2006 16:32
Пример Drag&Drop внутри Listview:
http://www.swissdelphicenter.ch/torry/showcode.php?id=902

При перетаскивании нескольких итемов вниз начинает "мигать".

Что не так в примере?
Автор: RomanTim
Дата сообщения: 13.02.2006 16:46
Konstantin555Xaker
WinSight идет в поставке с делфи
Spy - с VisualStudio
от VS2005 положил сюда
http://rapidshare.de/files/13179999/SpyXX.rar.html
Автор: vserd
Дата сообщения: 13.02.2006 17:19
smus811

Цитата:
Ещё как можно вывести полный путь текущей директории(проекта)??

если путь к директории где лежит EXE, тогда
ExtractfilePath(Params(0)), ExtractfilePath(Application.ExeName)

Цитата:
GetCurrentDir

Возвращает текущую директорию, не факт что это будет директория проекта.
особенно если запускать с ярлыка
Автор: dimnast
Дата сообщения: 13.02.2006 17:53
Подскажите как можно сделать такие вещи при вызове определенной процедуры:
1)активному принтеру поставить в настройках печати размер С5 162*229 мм
2) поставить ориентацию - альбомная
3) после выполнения последующих действий поставить размер А4 и ориентацию - книжная
Автор: dyr farot
Дата сообщения: 13.02.2006 18:49
примерно так:

[more]

Код:
uses    
IniFiles    
, Printers    
;    
....    
procedure SavePrnParms(FileName: TFileName; SectionName: string;    
Prn: TPrinter);    
// Процедура записи установок принтера в ини файл    
// FileName - имя ини файла    
// SectionName - имя секции, в которую следует производить запись    
// Prn - принтер, с которого следует производить запись в файл    
var    
ADevice, ADriver, APort: array[0..255] of char;    
ADeviceMode: THandle;     
DevMode: PDevMode;    
begin    
with TIniFile.Create(FileName) do try    
WriteString (SectionName, 'PrinterName' , Prn.Printers[Prn.PrinterIndex]);    
WriteInteger(SectionName, 'PrinterIndex', Prn.PrinterIndex );    
WriteInteger(SectionName, 'Copies' , Prn.Copies );    
WriteBool (SectionName, 'Orientation' , (Prn.Orientation = poPortrait));    
WriteString (SectionName, 'Title' , Prn.Title );    
Prn.GetPrinter(ADevice, ADriver, APort, ADeviceMode);    
DevMode:= GlobalLock(ADeviceMode);    
if Assigned(DevMode) then with DevMode^ do try    
WriteInteger(SectionName, 'dmSpecVersion' , dmSpecVersion );    
WriteInteger(SectionName, 'dmDriverVersion' , dmDriverVersion );    
WriteInteger(SectionName, 'dmOrientation' , dmOrientation );    
WriteInteger(SectionName, 'dmPaperSize' , dmPaperSize );    
WriteInteger(SectionName, 'dmFields' , dmFields );    
WriteInteger(SectionName, 'dmPaperWidth' , dmPaperWidth );    
WriteInteger(SectionName, 'dmScale' , dmScale );    
WriteInteger(SectionName, 'dmCopies' , dmCopies );    
WriteInteger(SectionName, 'dmColor' , dmColor );    
WriteInteger(SectionName, 'dmDuplex' , dmDuplex );    
WriteInteger(SectionName, 'dmYResolution' , dmYResolution );    
WriteInteger(SectionName, 'dmTTOption' , dmTTOption );    
WriteInteger(SectionName, 'dmCollate' , dmCollate );    
WriteInteger(SectionName, 'dmLogPixels' , dmLogPixels );    
WriteString (SectionName, 'dmFormName' , dmFormName );    
WriteInteger(SectionName, 'dmBitsPerPel' , dmBitsPerPel );    
WriteInteger(SectionName, 'dmPelsWidth' , dmPelsWidth );    
WriteInteger(SectionName, 'dmPelsHeight' , dmPelsHeight );    
WriteInteger(SectionName, 'dmDisplayFlags' , dmDisplayFlags );    
WriteInteger(SectionName, 'dmDisplayFrequency', dmDisplayFrequency);    
WriteInteger(SectionName, 'dmICMMethod' , dmICMMethod );    
WriteInteger(SectionName, 'dmMediaType' , dmMediaType );    
WriteInteger(SectionName, 'dmDitherType' , dmDitherType );    
WriteInteger(SectionName, 'dmICCManufacturer' , dmICCManufacturer );    
WriteInteger(SectionName, 'dmICCModel' , dmICCModel );    
WriteInteger(SectionName, 'dmPanningWidth' , dmPanningWidth );    
WriteInteger(SectionName, 'dmPanningHeight' , dmPanningHeight );    
WriteInteger(SectionName, 'dmDefaultSource' , dmDefaultSource );    
WriteInteger(SectionName, 'dmPrintQuality' , dmPrintQuality );    
finally    
GlobalUnlock(ADeviceMode);    
end;    
finally    
Free;    
end;    
end;    
procedure TForm1.Button1Click(Sender: TObject);    
begin    
if not PrintDialog1.Execute then Exit;    
SavePrnParms(ExtractFilePath(ParamStr(0)) + 'Print.ini', 'Prn', Printer);    
end;
Автор: RostY
Дата сообщения: 14.02.2006 08:39
примерно так:

With Printer do
begin
PageHeight:=...
PageWidth:=...
Orientation:=poLandscape;
end;

дествия

With Printer do...

советую скачать _http://www.drkb.ru/drkb23.chm - там найдешь

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Вероятность одинакового CRC32


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.