PDA

Просмотр полной версии : [Delphi]/[Pascal] Задай вопрос, получи ответ


Страницы : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

z01b
19.07.2007, 14:30
КАк сделать переход на другую форму через буттон?
FormN.Show или FormN.ShowModal, где N - номер формы

NetMan
19.07.2007, 14:33
z01b > см. SetWindowPos.

z01b
19.07.2007, 14:35
z01b > см. SetWindowPos.
Пытался, но ничо не выходит, если не трудно, дай примерчик.

Ch3ck
19.07.2007, 14:39
Копипаст:

var
h: HWND;
begin
h := findwindow(nil, 'Безымянный - Блокнот');
if h <> 0 then
SetWindowPos(h, HWND_BOTTOM, 1, 1, 20, 20, swp_nosize);
end;




Опять находим блокнот. Его дескриптор помещаем в переменную класса HWND[С английского Handle Window - дескриптор окна]. Далее используем функцию SetWindowPos для задания позиции. В качестве параметров нужно указать:

Дескриптор окна, которое хотим переместить
Идентификатор окна, которое предшествует перемещаемому окну в Z-последовательности. Z-последовательность это порядок, в котором формировались окна. Данный параметр указывает с какого именно окна необходимо начинать писк. В качестве значений может принимать либо дескриптор какого-либо окна в системе, либо одно из нижеследующих значений:
HWND_BOTTOM Начало Z-последовательности
HWND_NOTOPMOST Первое окно которое располагается не "поверх все окон"
HWND_TOP Вершина Z-последовательности
HWND_TOPMOST Первое окно которое располагается "поверх все окон"
Позиция окна по горизонтали
Позиция окна по вертикали
Ширина окна
Высота окна
Спецификаторы изменения позиции и размеров окна[флаги]. Для задания значения можно комбинировать следующие константы
SWP_DRAWFRAME Прорисовка фрейма вокруг окна.
SWP_FRAMECHANGED Посылает сообщение WM_NCCALCSIZE окну, даже если размер его не был изменён. Если этот флаг не указан, сообщение WM_NCCALCSIZE будет посылаться, только после изменения размеров окна.
SWP_HIDEWINDOW Скрывает окно.
SWP_NOACTIVATE Не активизирует окно. Если же этот флаг не будет поставлен, окно активизируется и будет перемещено поверх всех окон. А вот встанет ли окно даже выше тех окон, которым задано HWND_TOPMOST или нет зависит от параметра hWndInsertAfter.
SWP_NOCOPYBITS Если этот спецификатор не будет установлен, тогда содержимое клиентской области окна будет скопировано и вставлено во вновь отобразившееся окно после его перемещения.
SWP_NOMOVE Сообщает, что нужно игнорировать параметры задания позиции окну.
SWP_NOOWNERZORDER Сообщает, что не следует изменять позицию окна владельца в Z-последовательности.
SWP_NOREDRAW Не перерисовывает окно.
SWP_NOREPOSITION Такой же как и SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Мешает окну получить сообщение WM_WINDOWPOSCHANGING.
SWP_NOSIZE Сообщает, что нужно игнорировать параметры задания размеров окну.
SWP_NOZORDER Сохраняет текущее положение в Z-последовательности (игнорирует сообщение hWndInsertAfter parameter).
SWP_SHOWWINDOW Отображает окно.

z01b
19.07.2007, 14:41
Копипаст:

var
h: HWND;
begin
h := findwindow(nil, 'Безымянный - Блокнот');
if h <> 0 then
SetWindowPos(h, HWND_BOTTOM, 1, 1, 20, 20, swp_nosize);
end;




Опять находим блокнот. Его дескриптор помещаем в переменную класса HWND[С английского Handle Window - дескриптор окна]. Далее используем функцию SetWindowPos для задания позиции. В качестве параметров нужно указать:

Дескриптор окна, которое хотим переместить
Идентификатор окна, которое предшествует перемещаемому окну в Z-последовательности. Z-последовательность это порядок, в котором формировались окна. Данный параметр указывает с какого именно окна необходимо начинать писк. В качестве значений может принимать либо дескриптор какого-либо окна в системе, либо одно из нижеследующих значений:
HWND_BOTTOM Начало Z-последовательности
HWND_NOTOPMOST Первое окно которое располагается не "поверх все окон"
HWND_TOP Вершина Z-последовательности
HWND_TOPMOST Первое окно которое располагается "поверх все окон"
Позиция окна по горизонтали
Позиция окна по вертикали
Ширина окна
Высота окна
Спецификаторы изменения позиции и размеров окна[флаги]. Для задания значения можно комбинировать следующие константы
SWP_DRAWFRAME Прорисовка фрейма вокруг окна.
SWP_FRAMECHANGED Посылает сообщение WM_NCCALCSIZE окну, даже если размер его не был изменён. Если этот флаг не указан, сообщение WM_NCCALCSIZE будет посылаться, только после изменения размеров окна.
SWP_HIDEWINDOW Скрывает окно.
SWP_NOACTIVATE Не активизирует окно. Если же этот флаг не будет поставлен, окно активизируется и будет перемещено поверх всех окон. А вот встанет ли окно даже выше тех окон, которым задано HWND_TOPMOST или нет зависит от параметра hWndInsertAfter.
SWP_NOCOPYBITS Если этот спецификатор не будет установлен, тогда содержимое клиентской области окна будет скопировано и вставлено во вновь отобразившееся окно после его перемещения.
SWP_NOMOVE Сообщает, что нужно игнорировать параметры задания позиции окну.
SWP_NOOWNERZORDER Сообщает, что не следует изменять позицию окна владельца в Z-последовательности.
SWP_NOREDRAW Не перерисовывает окно.
SWP_NOREPOSITION Такой же как и SWP_NOOWNERZORDER.
SWP_NOSENDCHANGING Мешает окну получить сообщение WM_WINDOWPOSCHANGING.
SWP_NOSIZE Сообщает, что нужно игнорировать параметры задания размеров окну.
SWP_NOZORDER Сохраняет текущее положение в Z-последовательности (игнорирует сообщение hWndInsertAfter parameter).
SWP_SHOWWINDOW Отображает окно.

cпс, +1

infernal-team
19.07.2007, 14:46
спс, а как сделать чтобы когда открывалась форма номер 2, 1 форма закрывалась.

z01b
19.07.2007, 14:55
спс, а как сделать чтобы когда открывалась форма номер 2, 1 форма закрывалась.
Form2.show;
Form1.Close;

Joker-jar
19.07.2007, 14:59
при закрытии главной формы приложение закроется, вроде как. Скрывать нужно

z01b
19.07.2007, 15:03
при закрытии главной формы приложение закроется, вроде как. Скрывать нужно
Точно, значит Form2.Show; Form1.Hide;

БензиН
19.07.2007, 15:20
Неработает, выдает ошибку !!!

z01b
19.07.2007, 15:24
Неработает, выдает ошибку !!!
так выкладывай её сюда, или зделай скрин

z01b
19.07.2007, 15:29
а как задать размер окна, например 800х600

NetMan
19.07.2007, 15:34
z01b > SetWindowPos(Form1.Handle, HWND_TOP, 0, 0, 800, 600, SWP_NOMOVE);

Joker-jar
19.07.2007, 15:35
Form1.Wodth, Form1.Height. Может тебе maximize нужен?

z01b
19.07.2007, 15:39
Form1.Wodth, Form1.Height. Может тебе maximize нужен?
метод NetMan`a помог, спс и тебе за отзыв. Плюсег обеим к репе.

infernal-team
19.07.2007, 15:46
Спасиб!!! Скажите как убрать с панели задач программу.

infernal-team
19.07.2007, 15:47
Надеюсь на помощь!!!

z01b
19.07.2007, 15:50
Спасиб!!! Скажите как убрать с панели задач программу.
А для каких целей? В принципе, мона через ring0. На wasm.ru есть компонент для делфи!

Вот сылка http://www.wasm.ru/pub/21/files/ring0.rar

Joker-jar
19.07.2007, 15:57
У этой штуковины на панели задач отдельный хэндл - Application.handle. Скрой его

BAZLAYTER
19.07.2007, 17:09
Как генерировать а то я не умею

z01b
19.07.2007, 17:25
Как генерировать а то я не умею
что?

Ch3ck
19.07.2007, 18:01
Убрать:

begin
ShowWindow(handle, SW_HIDE);
ShowWindow(Aplication.Handle, SW_HIDE);
end;

P.S Хватит тупить...

z01b
20.07.2007, 16:25
как выводить красный текст в Мемо через Memo1.Lines.Add('text');?

NetMan
20.07.2007, 16:54
z01b > В TMemo нельзя менять цвет отдельной строки/символов. Юзай TRichEdit.

GlOFF
20.07.2007, 17:05
NetMan -> Выводить цвет можно, но не средствами Делфи. Нужно через API мудрить, отдельная тема...

W!z@rD
20.07.2007, 20:46
Button1.OnClick

Memo1.Font.Color:=clRed;
Memo1.text:='Text';

//I think so... ;)

RichEdit better than Memo. IMHO

vladest
20.07.2007, 21:40
Как получить заголовок и указатель активного окна?

da_ff
20.07.2007, 22:14
HWND GetForegroundWindow() получение хендла текущего окна
а если тебе нужен заголовок для поиска то лучше HWND FindWindow(имя класса окна,текст заголовка окна)

z01b
21.07.2007, 09:52
Есть у когонибудь лекарство на Делфи 2007?? Буду очень благодарен, весь гугл перерыл!

infernal-team
21.07.2007, 10:04
Несочтите за тупостоь, где скрывать этот хендл? И на форме у меня нету этого кода:

begin
ShowWindow(handle, SW_HIDE);
ShowWindow(Aplication.Handle, SW_HIDE);
end;

Ch3ck
21.07.2007, 10:06
http://drcheck.narod.ru/keygen.rar

z01b
21.07.2007, 10:07
handle = FindWindow(nil,'Имя заголовка')

z01b
21.07.2007, 10:28
http://drcheck.narod.ru/keygen.rar
не 7 а BDS 2007 :)

vladest
21.07.2007, 14:33
FindWindow не то, тк не известен заголовок (его и надо поймать), а GetForegroundWindow() - возвращает чисто, ну сам тип HWND то LongWord...
Мне надо при смене окна получать заголовок активного окна.
Например, текущий блокнот, нодо получить его заголовок. как?

Joker-jar
21.07.2007, 15:08
Ставь хук wh_shell, сможешь отлавливать смену активного окна и узнавать его заголовок

vladest
21.07.2007, 15:55
Ставь хук wh_shell, сможешь отлавливать смену активного окна и узнавать его заголовок

по-подробнее, или линк если не в лом

da_ff
21.07.2007, 16:35
2 vladest
int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount) - получение заголовка окна
hWnd – хэндл окна
lpString – буфер, куда будет помещен заголовок
nMaxCount – максимальная длина буфера

HWND GetForegroundWindow() получение хендла текущего окна

если же будешь ставить хук то придется таскать с собой dll'ку

Allbit
21.07.2007, 18:55
Как прочитать из реестра значение типа 0x00000042(66), а заодно и как изменить.. понятно, менять нужно только Decimal часть, но как это реализовать?...

...

z01b
21.07.2007, 19:06
Как прочитать из реестра значение типа 0x00000042(66), а заодно и как изменить.. понятно, менять нужно только Decimal часть, но как это реализовать?...

...
а какой реестр? может память процесса? Это что ты дал, токо адрес!

NetMan
21.07.2007, 19:09
Allbit > На сколько я понял это значение типа DWORD. Юзай ReadInteger.

integrity
21.07.2007, 19:41
Есть у когонибудь лекарство на Делфи 2007?? Буду очень благодарен, весь гугл перерыл!
Вот тебе кряк на слиле: http://slil.ru/24650549

кряк от делфи, купленной в китае гдето 3 месяца назад :)
клево они его назвали - D2007Tweaks v1.00 :DDD

z01b
21.07.2007, 22:04
Вот тебе кряк на слиле: http://slil.ru/24650549

кряк от делфи, купленной в китае гдето 3 месяца назад :)
клево они его назвали - D2007Tweaks v1.00 :DDD
у меня версия 1.01 и там он не пашет (((

Allbit
21.07.2007, 22:43
NetMan поподробнее плз...

KEZ
21.07.2007, 23:18
> Как прочитать из реестра значение типа 0x00000042(66), а заодно и как изменить.. понятно, менять нужно только Decimal часть, но как это реализовать?...

читать из реестра RegQueryValue(/Ex)
изменить RegSetValue
decimal - десятичный, какая там decimal часть ... мм наркотики это плохо понятненько...

xaker-boss
22.07.2007, 15:04
Люди кто может написать такую программку, форма на ней одна кнопка когда запускаеш эту програму и проходит 1 минута выходит ошибка с надписью (Работает),
но если дапустим я запустил программу и подождал ну гдето ** секунд и нажму на эту единственную кнопку чтобы таймер начел отчёт времини заново, ну и также когда дайдёт доконца выйдет ошибка...
Плиз если кто напишет выложете исходник.

z01b
22.07.2007, 17:52
http://webfile.ru/1475967
пароль antichat.ru

Ch3ck
22.07.2007, 20:14
2vladest:

Можно поставить таймер, вот и всё...
Я решил проблему так:

var
Form1: TForm1;
s:pchar;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
getmem(s,100);
getwindowtext(getforegroundwindow,s,100);
form1.Caption := s;
end;
end.

z01b
23.07.2007, 16:27
Буду призднателен, если ктото даст пример, как использовать idHTTP из IndyClients, а точьнее, мну нужно заполнить все формы любым текстом с сайта http://application.modelvilla.de/ и отправить.

Isis
23.07.2007, 18:51
z01b, юзал бы поиск - уже нашел бы...

Exile1985
24.07.2007, 10:40
Бля народ возмите книги и учите, не задавайте тупых вопросов типа таких:

>>как закрыть окно Form1.close:=true;
или
1: как сделать меню недоступным
2:используй свойство Enable
1:И что...???

да ничего, баран ты вот что..., идиот


неужели вам лучше сидеть на форуме и в наглую всех доставать своей тупостью, да еще и просить поискать за вас ответ в инете для решения ваших проблемм с написанием блокнота бля.

лично я советую возмите вы книгу любую для начинающих по делфи, вот например Библию делфи автор фленов, на все эти детские вопросы там есть ответы, потратьте вы неделю, и вам интересно будет и народа доставать тупостью не будете, а вопросы задавайте уже когда ппц и книгу почитали и понять не смогли, или не нашли ответ на ваш вопрос в книге.
А натакие вопросты в любой книге по делфи ответ есть стопудово.


>>Сообщение от infernal-team
спс, а как сделать чтобы когда открывалась форма номер 2, 1 форма закрывалась.

Ответ:
Form2.show;
Form1.Close;

ты сам то понял что написал а? как ты думаешь если главная ворма будет закрыта, дочерняя останется жить??Если ты вырубишь винду у тебя эксплорер все равно работает и ты в инете седишь без винды да??

>>_seeattack_
расскажите как написать простенький редактор на Delphi

РУКАМИ БЛЯ, САДИШЬСЯ ЗА КОМП, ЗАПУСКАЕШЬ ДЕЛФИ И ПИШИШЬ РУЧКАМИ.

>>infernal-team
Как скрыть программу с панели задач?

удали ее нах, вместе с панелью задачь.

zl0y
24.07.2007, 11:54
Да вобще лень книжку прочесть =))

KEZ
24.07.2007, 12:49
>>infernal-team
Как скрыть программу с панели задач?

заклей темным скотчем или изолентой то место внизу экрана где кнопка твоей программы на панели задач

z01b
24.07.2007, 13:11
>>infernal-team
Как скрыть программу с панели задач?

заклей темным скотчем или изолентой то место внизу экрана где кнопка твоей программы на панели задач
как всегда кез со своими оригинальными ответами :D

z01b
24.07.2007, 13:20
Точьно, значит Form2.Show; Form1.Hide;
Ты читай до конца лол ! " Умный " нашелся.
Смог, влепил бы тебе сто минусов, чем ты людей помог с твоим умным постом???

mari00
24.07.2007, 13:34
Эээ чет вы тут начали лаяться=\, ну да ладно, вот такой вопрос как организовать поиск определенного файла по имени или части имени.Какие компоненты использовать?И можно ли обойтись без Апи функций и процедур?

z01b
24.07.2007, 13:35
Спасиб!!! Скажите как убрать с панели задач программу.
Вот библиотека nthide.dll, работает отличьно !
http://slil.ru/24659192

z01b
24.07.2007, 13:37
Эээ чет вы тут начали лаяться=\, ну да ладно, вот такой вопрос как организовать поиск определенного файла по имени или части имени.Какие компоненты использовать?И можно ли обойтись без Апи функций и процедур?
Делается через ТSearchRec

KEZ
24.07.2007, 13:38
> как всегда кез со своими оригинальными ответами

ты сначала попробуй! увидишь что это помогает!

z01b
24.07.2007, 13:49
> как всегда кез со своими оригинальными ответами

ты сначала попробуй! увидишь что это помогает!
да я и не сомниваюсь, единственный минус, это что действует только локально ))) :D

Exile1985
24.07.2007, 14:27
Ты читай до конца лол ! " Умный " нашелся.
Смог, влепил бы тебе сто минусов, чем ты людей помог с твоим умным постом???

а какой смысл отвечать на такие вопросы?
лично я просто не вижу смысла отвечать на них, если он не знает как закрыть форму, что можно ему обьяснять?? да ничего, единственное что можно сказать это "бери книгу и учи".

я не говорю что все вопросы тупые, но некоторые просто поражают своей тупостью :mad:


2. а чем тут поможешь, эта болезнь не лечится

3. а мне лично пофигу на эти + или -, какая разница, у этого гения плюсов вон за штукарь перевалило, а он тупит, вывод: нахрена они нужны???

KEZ
24.07.2007, 14:35
чел, скоро твоя агрессия просто кончится и ты поймешь что на форум.античат.ру людям бесполезно что-либо обьяснять ; )
поэтому если кто-то спросит как закрыть форму скажи "скотчем"

z01b
24.07.2007, 15:07
чел, скоро твоя агрессия просто кончится и ты поймешь что на форум.античат.ру людям бесполезно что-либо обьяснять ; )
поэтому если кто-то спросит как закрыть форму скажи "скотчем"
Кез, без обид, но если не хочешь помогать челу, то закрой глаза на его пост, и ничего не пиши

W!z@rD
24.07.2007, 15:16
Эээ чет вы тут начали лаяться=\, ну да ладно, вот такой вопрос как организовать поиск определенного файла по имени или части имени.Какие компоненты использовать?И можно ли обойтись без Апи функций и процедур?
Компоненты? ну вот тебе webfile.ru/1477726 (6кб) ;)
простой думаю разберешься...
ун а если руками-то:

button1.click

var sr:TSearchRec;
begin
//ищем... папка c:\windows; по расширению exe; все файлы (скрытые, системные, и т.д.) кроме папок
//если функция возр-т 0, то что-то найденно...
if FindFirst('c:\windows\*.exe', faAnyFile-faDirectory,sr)=0 then
try
repeat
ListBox1.Items.Add(ExtractFileName(sr.Name));
//добавляем имя найденного файла в listbox
until FindNext(sr)<>0;
finally
//освобождаем ресурсы
FindClose(sr);
end;
end;

вот и все... собственно говоря... ;)

da_ff
24.07.2007, 23:36
Эээ чет вы тут начали лаяться=\, ну да ладно, вот такой вопрос как организовать поиск определенного файла по имени или части имени.Какие компоненты использовать?И можно ли обойтись без Апи функций и процедур?
procedure GetList(Dir:string;SL:TStringList);
var
i:integer;
SRec:TSearchRec;
begin
i:=FindFirst(Dir+'\'+'*',faAnyFile,SRec);
while i=0 do
begin
if((SRec.Name='')or(SRec.Name='.')or(SRec.Name='.. '))then
begin
end
else if SRec.Attr=faDirectory then
GetList(Dir+'\'+SRec.Name,SL)
else
//здесь выполняются действия с файлами делай че хочешь
SL.Add(GetTitle(Dir+'\'+SRec.Name)+#0+Dir+'\'+SRec .Name);//для примера собираются имена файлов в StringList
i:=FindNext(SRec);
end;
end;

xaker-boss
25.07.2007, 00:01
Кто может выложете те компоненты которые нужны для работы с этим исходником:
_http://forum-mp3.org/mini_player.zip
Буду вам очень блогодарен.
У меня Delphi 7

W!z@rD
25.07.2007, 00:15
Кто может выложете те компоненты которые нужны для работы с этим исходником:
_http://forum-mp3.org/mini_player.zip
Буду вам очень блогодарен.
У меня Delphi 7
1. компонент KMAlert
2. Trayicon


ВСЕ ИМЕЕТСЯ В АРХИВЕ!

z01b
25.07.2007, 14:41
Кто может выложете те компоненты которые нужны для работы с этим исходником:
_http://forum-mp3.org/mini_player.zip
Буду вам очень блогодарен.
У меня Delphi 7
Открываешь KMAlert.pas потом идешь в Component > Install Component > потом жмешь ок.
Аналоничьно с Tray

vladest
25.07.2007, 16:21
есть TServerSocket и TClientSocket, как передать файл от сервера к клиенту или наоборот.

Можно и через другие компоненты, но желательно через сокеты.

z01b
25.07.2007, 16:28
Возможно ли поменять МАК адресс с помошью делфи?

z01b
25.07.2007, 16:31
есть TServerSocket и TClientSocket, как передать файл от сервера к клиенту или наоборот.

Можно и через другие компоненты, но желательно через сокеты.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
btnTestSockets: TButton;
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure btnTestSocketsClick(Sender: TObject);
private
FStream: TFileStream;
{ Private Declatrations }
public
{ Public Declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
iLen: Integer;
Bfr: Pointer;
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
try
Socket.ReceiveBuf(Bfr^, iLen);
FStream.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FStream := nil;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Assigned(FStream) then
begin
FStream.Free;
FStream := nil;
end;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
FStream := TFileStream.Create('c:\temp\test.stream.html', fmCreate or fmShareDenyWrite);
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendStream(TFileStream.Create('c:\temp\test .html', fmOpenRead or fmShareDenyWrite));
end;

procedure TForm1.btnTestSocketsClick(Sender: TObject);
begin
ServerSocket1.Active := True;
ClientSocket1.Active := True;
end;

end.

SNAIPER ShoT
25.07.2007, 16:39
Прива всем!!! У меня такой вопрос где мона скачать Delphi 5 и 7 а то ни как не могу найти!!! =( Подскажите plZzZ Зарание БОЛЬШОЕ СПАСИБОЧКИ =)

W!z@rD
25.07.2007, 17:03
Возможно ли поменять МАК адресс с помошью делфи?
Если я ничего не путаю МАС адрес сетевого девайся прописан в самом железе...

W!z@rD
25.07.2007, 17:07
Прива всем!!! У меня такой вопрос где мона скачать Delphi 5 и 7 а то ни как не могу найти!!! =( Подскажите plZzZ Зарание БОЛЬШОЕ СПАСИБОЧКИ =)
гугл попробуй попотроши
запрос типа

"borland delphi 7" +скачать -купить

:p

FeraS
25.07.2007, 17:09
SNAIPER ShoT
http://rapidshare.com/files/32721538/del_7e.part1.rar.html
http://rapidshare.com/files/32724050/del_7e.part2.rar.html

Пароль: http://netz.ru

Exile1985
25.07.2007, 18:06
Возможно ли поменять МАК адресс с помошью делфи?

Если я ничего не путаю МАС адрес сетевого девайся прописан в самом железе...

МАС, да прописан в самой сетевухе, но можно его подменить, как его подменить именно с помощью делфи точно не скажу, т.к. сам не пробовал, а если ручками то в настройках твоей сетевухи,

попробуй с помощь делфи поменять значение в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\...\Parameters
точно уже не помню че где но те нужно изменить один только ключ после чего откл и заново вкл сетку

Feshh
25.07.2007, 20:22
вот такой вот вопрос у меня

как сделать чтобы определенное слово в блокноте скрытно заменялось на текст из Edit ?

подскажите кто знает.

l-l00K
25.07.2007, 21:05
В хакере писали про это
http://www.xakep.ru/post/36041/default.asp

z01b
26.07.2007, 00:51
МАС, да прописан в самой сетевухе, но можно его подменить, как его подменить именно с помощью делфи точно не скажу, т.к. сам не пробовал, а если ручками то в настройках твоей сетевухи,

попробуй с помощь делфи поменять значение в реестре
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\...\Parameters
точно уже не помню че где но те нужно изменить один только ключ после чего откл и заново вкл сетку
Ручьками могу и я, а вот в делфи, тока читать (

b2mbey
26.07.2007, 07:16
Подскажите, пожалуйста, как в Дельфях определить есть ли подключение к инету, если такое возможно???

Joker-jar
26.07.2007, 07:29
Самое банальное - это пропинговать какой-нибудь сервер, который с довольно большой вероятностью не будет в досе, например yandex.ru. Сейчас в DRKB поищу более правильные решения

aka PSIH
26.07.2007, 07:39
Подскажите, пожалуйста, как в Дельфях определить есть ли подключение к инету, если такое возможно???

Положить компонент TCP на форму и

How can I tell at runtime if I am connected to the internet?

Answer:
You can use the TCP component to retrieve the Local IP address. If it is "0.0.0.0" then there is no connection.

exp:

procedure TForm1.Button1Click(Sender: TObject);
begin
if TCP1.LocalIp = '0.0.0.0' then
ShowMessage('Your not connected!');
end;

(c)vuithelp.ru

Joker-jar
26.07.2007, 07:41
Это если нет локалки проканает

b2mbey
26.07.2007, 07:51
Спс, впринципе мне это подходит... А может у нее есть что то типа GlobalIp, ну да ладно тут уже сам разберусь...спс...

b2mbey
26.07.2007, 08:28
и еще почему не работате вот это
procedure TForm1.FormCreate(Sender: TObject);
begin

If Messagebox(0,'Закроем???','Вопрос',MB _YesNo) <> IDYES Then
Form1.Close;
end;
Даже если вместо Form1.Close; ставлю Exit; не работает...

b2mbey
26.07.2007, 08:33
Я чего то не найду компоненту Tcp1, на какой вкладочке искать... Извинтиляюсь за глупые вопросы...

WAR!9G
26.07.2007, 09:24
b2mbey, имхо тоже самое:

procedure TForm1.Button1Click(Sender: TObject);
begin
if TcpClient1.LocalHostAddr = '0.0.0.0' then
ShowMessage('Your not connected!');
end;

TCPClient на вкладке Internet.

b2mbey
26.07.2007, 09:37
Аха извняюсь что не успел написать, но я это уже проделал, к сожаленью эта фунция возвращает не 0.0.0.0, а ххх.0.0.х где х-это цифры причем на разнных машинах, разные... Да и все бывает же такое что ты не в локалке, но в инете, например подключение ДиалАп

b2mbey
26.07.2007, 09:37
Аха извняюсь что не успел написать, но я это уже проделал, к сожаленью эта фунция возвращает не 0.0.0.0, а ххх.0.0.х где х-это цифры причем на разнных машинах, разные... Да и все бывает же такое что ты не в локалке, но в инете, например подключение ДиалАп, поэтому хотелось бы все таки знать конкретно, подключен или нет, может все таки вернуться к пинговке сайта???

Joker-jar
26.07.2007, 10:09
Условие выполняется, когда нажимаешь "Нет". Смени <> на =

Exile1985
26.07.2007, 10:10
Ручьками могу и я, а вот в делфи, тока читать (

вообщем не знаю какая у тебя ось, для винды хр можно сделать так:

Открываем раздел "HKLM\SYSTEM\CurrentControlSet\Control\
Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
тут описаны интерфейсы всех имеющихся сетевых адаптеров. Находим нужный нам интерфейс он будет содержать имя сетевой карты.Там где будут тольлко ветки Linkage и Ndi туда не нельзь эт не то что нужно.
Изменяем (добавляем, его может и не быть, тип данных - REG_SZ) ключ "NetworkAddress". Вводим новый адрес.

Отключаем, затем включаем сетку.

ЗЫ чисто теоритически, если не можнешь найти ключ NetworkAddress и куда его пихать тож не особо понятно, попробуй изменить МАС в ручную, по идее этот ключ должен создатся.

Если же нет то просто заюзай поиск по вбитому тобой новому адресу в реестре, далее я думаю не так уж и сложно считать значение ключа и изменить его.
думаю и сам знаешь как это делать но... на всякий случай :)

procedure TForm1.Button4Click(Sender: TObject);
var
REG : TRegistry;

begin

REG := TRegistry.Create;
REG.RootKey:=HKEY_LOCAL_MACHINE;
REG.OpenKey('SYSTEM\CurrentControlSet\Control\Clas s\{4D36E972-E325-11CE-BFC1-08002BE10318}\000X\.....',true);
REG.WriteString('Test1','C:\\\'); //собственно добавляем ключ
Memo1.lines.text:=REG.ReadString('Test1'); // читаем значение ключа
REG.CloseKey;
REG.Destroy;
end;

пробелы в коде вставляет форум, соответственно убрать

b2mbey
26.07.2007, 10:17
Условие выполняется, когда нажимаешь "Нет". Смени <> на =
Ты не думай,что я ламер!!! :-))) Я знаю много языков программирования, в том числе и Паскаль, вот решил и Дельфи подучить для шалости!!!
Проблема не в этом... к сожаленью...
ДА и не работает это, я пробовал он возвращает не то что мы ожидаем...
Там видишь процедура создания формы, а мы ее как бы затыкаем... эта процедура работает если ее вставить не в этой процедуре...
Хым... масло мясляное :-)))
Короче я тоже самое вставил в кнопку и это работает...
Но я уже обошел это... лучше скажи как с подключением к интернет быть... :-)))

mari00
26.07.2007, 11:17
и еще почему не работате вот это
procedure TForm1.FormCreate(Sender: TObject);
begin

If Messagebox(0,'Закроем???','Вопрос',MB _YesNo) <> IDYES Then
Form1.Close;
end;
Даже если вместо Form1.Close; ставлю Exit; не работает...

Если тебе нужен выход по кнопке Да то я б сделал вот так:
procedure TForm1.FormCreate(Sender: TObject);
begin
case Application.MessageBox('Закрыть приложение?','Вопрос:',MB_YesNo + Mb_iconquestion) of
Idyes: form1.Close;
IdNo: showmessage('Не закрываем');
end;
end;

z01b
26.07.2007, 12:36
вообщем не знаю какая у тебя ось, для винды хр можно сделать так:

Открываем раздел "HKLM\SYSTEM\CurrentControlSet\Control\
Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
тут описаны интерфейсы всех имеющихся сетевых адаптеров. Находим нужный нам интерфейс он будет содержать имя сетевой карты.Там где будут тольлко ветки Linkage и Ndi туда не нельзь эт не то что нужно.
Изменяем (добавляем, его может и не быть, тип данных - REG_SZ) ключ "NetworkAddress". Вводим новый адрес.

Отключаем, затем включаем сетку.

ЗЫ чисто теоритически, если не можнешь найти ключ NetworkAddress и куда его пихать тож не особо понятно, попробуй изменить МАС в ручную, по идее этот ключ должен создатся.

Если же нет то просто заюзай поиск по вбитому тобой новому адресу в реестре, далее я думаю не так уж и сложно считать значение ключа и изменить его.
думаю и сам знаешь как это делать но... на всякий случай :)

procedure TForm1.Button4Click(Sender: TObject);
var
REG : TRegistry;

begin

REG := TRegistry.Create;
REG.RootKey:=HKEY_LOCAL_MACHINE;
REG.OpenKey('SYSTEM\CurrentControlSet\Control\Clas s\{4D36E972-E325-11CE-BFC1-08002BE10318}\000X\.....',true);
REG.WriteString('Test1','C:\\\'); //собственно добавляем ключ
Memo1.lines.text:=REG.ReadString('Test1'); // читаем значение ключа
REG.CloseKey;
REG.Destroy;
end;
пробелы в коде вставляет форум, соответственно убрать
Не получается, но я забыл сказать, мак адресс физически ментяь нельзя, а вот виртуально можно, и делается это из настройки сетевухи (диспетчер устройств)

Exile1985
26.07.2007, 12:46
Не получается, но я забыл сказать, мак адресс физически ментяь нельзя, а вот виртуально можно, и делается это из настройки сетевухи (диспетчер устройств)

ну да, реальный МАС адрес вшит в само железо, т.е. в саму сетевуху, а подменить его можно либо в настройках сетевухи либо в реестре, это точно сам когдато давно делал, но если так уж нужно то вечером приду дамой сделаю

b2mbey
26.07.2007, 13:52
Народ почему вот это не работает:

str := 'C:\1.lnk'
ShellExecute(0, 'explore', Pchar(str), nil, nil, SW_SHOWNORMAL);
WinExec(Pchar(str),SW_SHOWNORMAL);

причем если вместо Pchar(str) поставить 'C:\1.lnk' - это работает!!!
Не пойму... Дельфи глючит???

Arlendil
26.07.2007, 13:59
При попытке создания базы данных и обращения к программе Database Desktop выдается сообщение: Cannot load language driver

b2mbey
26.07.2007, 14:16
Народ почему вот это не работает:

str := 'C:\1.lnk'
ShellExecute(0, 'explore', Pchar(str), nil, nil, SW_SHOWNORMAL);
WinExec(Pchar(str),SW_SHOWNORMAL);

причем если вместо Pchar(str) поставить 'C:\1.lnk' - это работает!!!
Не пойму... Дельфи глючит???

Как это ни странно, но вот рабочий вариант:
ShellExecute(0, 'open', Pchar(ListBox1.Items.Strings[i]), nil, Pchar(Form2.DirectoryListBox1.Directory), SW_SHOWNORMAL);

Хотя я тоже мог сразу догадаться :D , про парамметр Директория.... хотя с ехе работает, когда явно указываешь ярлык тоже работает и без этого параметра...

Извините за мой русский...

b2mbey
26.07.2007, 14:48
И все таки народ... Как определить есть ли подключение к интернету???

z01b
26.07.2007, 15:24
И все таки народ... Как определить есть ли подключение к интернету???
пинг к gateway провайдера

b2mbey
26.07.2007, 15:29
А можно по подробней???

z01b
26.07.2007, 15:35
А можно по подробней???
Например у тебя айпи 86.106.27.234 а gateway будет 86.106.27.1 если пинг к gw не пойдет, значит у тебя нету нета!

b2mbey
26.07.2007, 15:45
Например у тебя айпи 86.106.27.234 а gateway будет 86.106.27.1 если пинг к gw не пойдет, значит у тебя нету нета!
Да, это понятно, а как это реализовать это в Дельфи?

z01b
26.07.2007, 16:03
Да, это понятно, а как это реализовать это в Дельфи?
http://delphi.about.com/library/weekly/code/src081503.zip
пинг компонент, чтоб не игрался с raw socket.

NetMan
26.07.2007, 16:06
b2mbey > http://www.delphisources.ru/pages/faq/internet_net.html

b2mbey
26.07.2007, 16:38
b2mbey > http://www.delphisources.ru/pages/faq/internet_net.html
А в этом куске кода, что такое TRasConn???

Ni0x
26.07.2007, 16:39
да тут одни извращенцы я смотрю =) все делается одной функцией
InternetGetConnectedState()

b2mbey
26.07.2007, 16:47
да тут одни извращенцы я смотрю =) все делается одной winapi функцией
InternetGetConnectedState()
Дельфя говорит не знаю такой.... в каком это юните???

NetMan
26.07.2007, 16:52
Вообще-то я дал линк на FAQ. Если вы не смогли найти, то вот
http://www.delphisources.ru/pages/faq/base/inet_active_conn.html

Ni0x
26.07.2007, 16:57
Дельфя говорит не знаю такой.... в каком это юните???
WinInet

b2mbey
26.07.2007, 17:03
Вообще-то я дал линк на FAQ. Если вы не смогли найти, то вот
http://www.delphisources.ru/pages/faq/base/inet_active_conn.html
Спасибо, это работает...

z01b
26.07.2007, 17:32
Спасибо, это работает...
А моё че не работает??? Я вроди проверял ! =\

b2mbey
26.07.2007, 17:45
А моё че не работает??? Я вроди проверял ! =\
Почему работает... Только мне кажеться что твой менее надежный... Сайт же тоже может отказать...
Спасибо конечно, за идею...

z01b
26.07.2007, 20:32
Почему работает... Только мне кажеться что твой менее надежный... Сайт же тоже может отказать...
Спасибо конечно, за идею...
Какой сайт:D
Я тебе сказал чтоб шлюз пинговал :D

zl0y
27.07.2007, 00:54
Челы помогите )пишу прогу ReadLn() загинаеться,напишите как через readfile() читать построчно текстовый файл =)

Joker-jar
27.07.2007, 01:33
Через апишку построчно нельзя, только блоками. Примерно так:
var
f: hFile;
st: _OfStruct;
count: Dword;
buf: array[0..255] of char;

begin
fillchar(st,sizeof(st),0);
f := OpenFile('c:\1.txt',st,OF_READ);
repeat
fillchar(buf,sizeof(buf),0);
ReadFile(f,buf,sizeof(buf),count,nil);
{...операции с блоком данных buf...}
until
count = 0;
CloseHandle(f);
А почему с readln загинается? Мож сорс покажешь?

zl0y
27.07.2007, 01:59
Короче мне надо читать построчно файл (что это представляет из себя):
читает в буфер все символы до #13#10 (конец строки),и так пока не кончиться файл...длинна строки небольшая (не больше 50 символов). ReadLn не подходит т.к мне надо много раз открыть файл на чтение,но если делаю так ошибку выдает.

Joker-jar
27.07.2007, 02:09
Файл как я понимаю текстовый? Есть еще логическая функция EOLN, которая возвращает true, если достигнут конец строки. То есть можно вложенным циклом перебрать все строки файла
while not EOF(f) do
begin
while not EOLN(f) do
begin
read(f,c);
{...}
end;
{...}
end;
Но в принципе от readln мало чем отличается.
надо много раз открыть файл на чтение
одновременно из одной проги чтоль? Или в разных участках кода? Закрываешь файл перед каждым новым открытием?

zl0y
27.07.2007, 02:20
Файл как я понимаю текстовый? Есть еще логическая функция EOLN, которая возвращает true, если достигнут конец строки. То есть можно вложенным циклом перебрать все строки файла
while not EOF(f) do
begin
while not EOLN(f) do
begin
read(f,c);
{...}
end;
{...}
end;
Но в принципе от readln мало чем отличается.

одновременно из одной проги чтоль? Или в разных участках кода? Закрываешь файл перед каждым новым открытием?
То что ты написал толку == 0 я это все знаю,незнал бы неспрашивал :mad: Дела в том что прога может за 1 раз открывать 2 или 3 раза файл ReadLn в этом случае успешно вылетает :(

Joker-jar
27.07.2007, 02:24
Ну незнаю, могу еще предложить файловые потоки. Если конечно на Vcl пишешь.

Joker-jar
27.07.2007, 02:41
Вот что-то ужасное накидал :)

procedure ReadLNFile(filename: string);
var
f: THandle;
count: Dword;
buf: array[0..255] of char;
s: string;
begin
s := '';
f:= FileOpen(filename, fmOpenRead or fmShareDenyNone);
repeat
fillchar(buf, sizeof(buf), 0);
count := FileRead(f, buf, 256);
s := s + StrPas(buf);
while pos(#13#10, s) > 0 do
begin
messagebox(0,pchar(copy(s,1,pos(#13#10, s))),nil,0);
delete(s,1,pos(#13#10, s));
end;
until
count = 0;
FileClose(f);
messagebox(0,pchar(s),nil,0);
end;

SNAIPER ShoT
27.07.2007, 04:01
а есть в делфи 7 код например такой
procedure TForm1.Button1Click(Sender: TObject);
begin
............ {чтоб при клике машина ушла на перезагрузку??? или такое ни как???} подскажите plz
end;

end.

FeraS
27.07.2007, 04:59
SNAIPER ShoT
ExitWindowsEx(EWX_REBOOT+EWX_FORCE, 0);

SNAIPER ShoT
27.07.2007, 05:04
ТЫ прям ВОЛШЕБНИК!!! СПС =)!!!

b2mbey
27.07.2007, 07:09
Какой сайт:D
Я тебе сказал чтоб шлюз пинговал :D
Гы-гы... Ну не так выразился... Звиняй... :D

Exile1985
27.07.2007, 10:50
Короче мне надо читать построчно файл (что это представляет из себя):
читает в буфер все символы до #13#10 (конец строки),и так пока не кончиться файл...длинна строки небольшая (не больше 50 символов). ReadLn не подходит т.к мне надо много раз открыть файл на чтение,но если делаю так ошибку выдает.


может я тя не правильно понял но.. мож так

procedure TForm1.Button1Click(Sender: TObject);
var
List:TStringList;
i:integer;
Source:string;
begin
List:=TStringList.Create;
if OpenDialog1.Execute then
List.LoadFromFile(Opendialog1.filename)
else exit;
for i:=0 to List.count-1 do begin
if pos('#13#10',List.Strings[i])> 0 then
Source:=List.Strings[i];
delete(Source,pos('#13#10',List.Strings[i]),length(List.Strings[i]));
List.strings[i]:=source;
end;
.........
.........
........ // тут собственно можешь делать что угодно со
//строками

List.SaveToFile(OpenDialog1.FileName);
List.free;
end;

и не надо парится с доступом к файлу

t04
27.07.2007, 13:52
перевожу исходник с си на делфи, не могу понять где ошибка в коде.

DWORD WINAPI ServAccept(LPVOID lpParam)
{
struct sockaddr_in ClientAddr;
int iSize=sizeof(ClientAddr);
SOCKET sConnect;
while(true)
{
if((sConnect=accept(*(SOCKET*)lpParam,(sockaddr*)&ClientAddr,&iSize))==INVALID_SOCKET)
break;
Connecting((LPVOID)sConnect);
// if(CreateThread(0,0,Connecting,(LPVOID)sConnect,0, 0)==0)
// break;
}
return 0;
}

вот на делфи

procedure ServAccept(lpParam: pointer); stdcall;
var
iSize : integer;
sConnect : TSOCKET;
ClientAddr: PSockAddr;
begin
iSize:=sizeof(ClientAddr);
while true do
begin
sConnect:=accept(TSOCKET(lpParam),ClientAddr,@iSiz e);
if sConnect = INVALID_SOCKET then
break;
Connecting(pointer(sConnect));
end;
(* if(CreateThread(0,0,Connecting,(LPVOID)sConnect,0, 0)==0)*)
(* break;*)
end;

zl0y
27.07.2007, 14:03
Вот что-то ужасное накидал :)

procedure ReadLNFile(filename: string);
var
f: THandle;
count: Dword;
buf: array[0..255] of char;
s: string;
begin
s := '';
f:= FileOpen(filename, fmOpenRead or fmShareDenyNone);
repeat
fillchar(buf, sizeof(buf), 0);
count := FileRead(f, buf, 256);
s := s + StrPas(buf);
while pos(#13#10, s) > 0 do
begin
messagebox(0,pchar(copy(s,1,pos(#13#10, s))),nil,0);
delete(s,1,pos(#13#10, s));
end;
until
count = 0;
FileClose(f);
messagebox(0,pchar(s),nil,0);
end;
Да вот то,что надо работает как часы :)

da_ff
27.07.2007, 18:03
перевожу исходник с си на делфи, не могу понять где ошибка в коде.
=) в функцию ServAccept передается указатель на сокет а не сам сокет просто его еще надо разименовать перед использованием в accept

SNAIPER ShoT
27.07.2007, 18:16
А как тама в дэлфи 7 зделать??? Например ты в фарме установил размер окна на котором приложене всегда будет открыто!!! ТО ЕСТЬ ЧТО б его не могли раздвинуть по монетору уже в *.exe файле!!! Подскажите пожалуйсста!!! :confused:

Пчел
27.07.2007, 18:28
А как тама в дэлфи 7 зделать??? Например ты в фарме установил размер окна на котором приложене всегда будет открыто!!! ТО ЕСТЬ ЧТО б его не могли раздвинуть по монетору уже в *.exe файле!!! Подскажите пожалуйсста!!! :confused:
Свойство формы BorderStyle, поставь в bsSingle

W!z@rD
27.07.2007, 18:29
не понял... ты что про mdi - интерфейс???
а для того чтобы раздвинуть форму у нее необходимо поставить свойство BorderStyle = bsSingle

SNAIPER ShoT
27.07.2007, 18:37
Спасибо но не то иммено а вот ты написал и я тамже нижняя она там самая вот ето я искал =)!!!
bsToolWindow

SNAIPER ShoT
28.07.2007, 02:47
А мона как нить на Delphi заменить кнопки чтоб были не как у 95-98 винды =( а на современые =) а то ктонить глянет на приложение и оболдеет =(??? Подскажите =) а то я тока,тока с ним начал общатся =(

FeraS
28.07.2007, 03:10
SNAIPER ShoT
Ставь на форуму компонент XPManifest из вкладки Win32

И еще, кинь в папку ../Delphi7/Bin этот файл: http://dump.ru/files/h/h074000083/ тогда и сам дельфи преобразится под винду)

SNAIPER ShoT
28.07.2007, 03:32
СПС =) Работаит =)! А мона вот ставиш в приложении AbouT в маин меню (Menus) на него ктонить код может написать а то не получаетси =( ppc!!!

FeraS
28.07.2007, 03:37
SNAIPER ShoT
Почитай это:
http://img70.imageshack.us/img70/6237/10001687255ho.jpg

http://rapidshare.de/files/13156194/Bibliya_Delphi.part1.rar.html
http://rapidshare.de/files/13156818/Bibliya_Delphi.part2.rar.html
http://rapidshare.de/files/13157655/Bibliya_Delphi.part3.rar.html

W!z@rD
28.07.2007, 04:42
СПС =) Работаит =)! А мона вот ставиш в приложении AbouT в маин меню (Menus) на него ктонить код может написать а то не получаетси =( ppc!!!
Есть готовые формы...
Смотри в File->New
поищи... там есть отдельно AboutForm кажется =/

LEE_ROY
28.07.2007, 05:05
угу, New > Other > Forms > AboutBox. В своем коде в uses пишеш - unit2, а потом в нужном месте Unit2.AboutBox.Show; чтобы появился About.

SNAIPER ShoT
28.07.2007, 05:28
угу, New > Other > Forms > AboutBox. В своем коде в uses пишеш - unit2, а потом в нужном месте Unit2.AboutBox.Show; чтобы появился About.

В любом ето каком??? например мона тута прям да:
procedure TForm1.Info1Click(Sender: TObject);
begin
Unit2.AboutBox.Show;
end;

или так ошибка будет ??? :confused:

LEE_ROY
28.07.2007, 05:39
да, можно и так :) попробуй возьми .. быстрее поймеш что и куда

SNAIPER ShoT
28.07.2007, 05:56
Люди а подскажите как можно к проге теперь форму password подвизать чтоб она без пароля не запускалася?

FeraS
28.07.2007, 06:28
SNAIPER ShoT
Ты каждый свой бредовый вопрос собираешься задавать тут?))
Прочти сначала книгу из 392 поста, а потом спрашивай ;)

W!z@rD
28.07.2007, 06:35
Люди а подскажите как можно к проге теперь форму password подвизать чтоб она без пароля не запускалася?
ппц я просто в шоке...
1. Юзать MaskEdit
2. Тоже есть готовая форма... =/

m1n0r
28.07.2007, 11:36
Люди а подскажите как можно к проге теперь форму password подвизать чтоб она без пароля не запускалася?

Сначала добавь к проекту PasswordDlg из File->New->Other->Dialogs;

Потом сделай PasswordDlg главной формой в проекте и перенеси Form1 в список доступных форм. В PasswordDlg вставь

procedure TPasswordDlg.OKBtnClick(Sender: TObject);
begin
if Password.Text='Pass' then
begin
Application.CreateForm(Tform1,Form1);
Form1.Show;
PasswordDlg.Hide;
end else ShowMessage('Incorrect password.');
end;
Теперь Form1 будет запускаться ток апри введении пароля Pass.

Fen-Omen
28.07.2007, 14:02
К чему делать пассворд диалог главной формой?

Просто в дополнению к своей программе создаешь готовую форму PasswordDlg , Появится форма с двумя кнопками "Ок" "Выход" Label и Edit. Edit будет являтся полем ввода пароля поэтому свойство PasswordChar указываешь "*", если стандартно этого не будет.

Идешь в обработчик события главной формы, и в событии OnShow указываешь:

PasswordDlg.ShowModal;

В этом случае главная форма останется главной, но перед ее запуском всегда будет появлятся PasswordDlg.

Для самой примитивной защиты пароль лучше хранить ввиде const. В обработчике события формы запроса пароля ищешь свойство OnCloseQuery и там вводим примерно такой код:


procedure TPasswordDlg.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
const p=`123456`; //Указываем наш пароль
begin
if Password.Text = p then CanClose:=true
else Application.Terminate;
end;//Если пароль совпадает с константой p - появится главная форма, если нет - приложение закончит работу

SNAIPER ShoT
28.07.2007, 22:38
Он пишит что типо не понимает Const =(
http://rh.foto.radikal.ru/0707/41/71bc0f18eeb8.jpg

:( :( :(

baltazar
28.07.2007, 23:17
вобщем вы наверное знаете программу Apex DC++ с открытым исходным кодом,когда там создается новая чат комнтата то почему-то коглда нажимаю+list он не выдает тех кто сидит в этой комнате а должен,как сделать так чтоб выдавал.?

Fen-Omen
28.07.2007, 23:37
Он пишит что типо не понимает Const =(

Как это не понимает? Ты уверен что сделал все правильно? Ты ниразу не объявлял переменных или констант?

LEE_ROY
28.07.2007, 23:43
Он пишит что типо не понимает Const =(
перед const, убери begin .

Fen-Omen
28.07.2007, 23:45
перед const, убери begin

Точнее поменя их местами)

const p='12345';
begin

Если ты хочешь объявить константу после начала процедуры, тогда о чем может быть речь?!)

SNAIPER ShoT
29.07.2007, 00:55
:) :) :) Спасибо ребята ето я просто там сам не внимательно скопировал :( !!!А ща заработало!!!
И кстати не ругайтеся не ггко я за дэлфи 4 день сижу
а охото что-то вкусного там ;)
Вот ещё вопрос а как что б нажимаеш OK и он писал ваш пароль не правильный и после 3 попыток закрывался??? :confused: Вутето наверно уже бут сложно да??? Как тока смогу поставлю вам плюсики за
большую помощь,а то наверно надоел уже вам :( !

mari00
29.07.2007, 01:08
Кто знает Функции, которые возвращают значени строки в виде Md5 шифрованного кода?

l-l00K
29.07.2007, 01:25
http://svdpro.info/page.php?id=75

W!z@rD
29.07.2007, 02:20
mari00 - писать самому, либо необходимо использовать уже готовые варианты...

SNAIPER ShoT - в бан можно тебя отправить =/... зачем же скрин?!??! ты че издеваешься?
1. траффик
2. Размер окна =/ ппц...
3. прото убиваешь... что нельзя было:
а) перепечатать сообщение об ошибке?
б) дать ссылку на скрин
в) вырезать кусок =/

support_ten
29.07.2007, 13:10
Скажите как сделать чтобы копка бутон была не октивной (прозрачной типа), а потом как в оба поле (edit) были введены символы нужной длины кнопка становилась активной (видлемой и рабочей).

NeXArmAor
29.07.2007, 13:35
support_ten ,

Button1.Enabled:=False.
if Length(Edit1.text) = длина and length(Edit2.Text) = длина then
Button1.Enabled:=True;
end;

особо над кодом не думал...но доделать как нефиг делать можно.

support_ten
29.07.2007, 13:45
Неполучилось чет, да и я малось тупанул. НУжно едит 1 и ComboBox2Change. С похмелья бошка вообще не варит. =( !!! Скинь полный код плиз.

support_ten
29.07.2007, 13:46
Вот вставил вот этот код не получилось.

Button1.Enabled:=False.
if Length(ComboBox2.text) = 5 and length(Edit1.Text) = 5 then
Button1.Enabled:=True;
end;

NeXArmAor
29.07.2007, 13:51
support_ten ,

procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Enabled:=False;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length(Edit1.Text) and Length(ComboBox2.Text) = 5 then
Button1.Enabled:=True;
end;

Доработай!

mari00
29.07.2007, 16:32
Length(ComboBox2.Text) = 5
такой метод не катит, т.к. у ComboBox2.Text тип будет не string.

LEE_ROY
29.07.2007, 17:05
т.к. у ComboBox2.Text тип будет не string
если не стринг, то что ж там будет? :rolleyes:

Ci5
29.07.2007, 18:11
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (length(combobox1.text)=длина) and (length(edit1.text)=длина) then
button1.enabled:=true;
end;

Или я торможу ? Видемой это как ? Enabled или visible ? И нуно еще в свойствах формы врубить KeyPreview в True;

Fen-Omen
29.07.2007, 18:13
ComboBox2.Text тип будет не string.

Угу, integer=\. А вообще, как раз таки стринг и будет)

Видемой это как ? Enabled или visible ?

За видимость объекта отвечает свойство Visible. А Enabled просто позволяет совершать над ним какие либо действия, если установлено значение true...

mari00
29.07.2007, 18:14
ComboBox2.
Property Text : TCaption.

Knight_of_Darkness
29.07.2007, 18:24
Скажите, как отлавливать ошибки в Indy IDHTTP? Есть ли там аналог "OnError"?

W!z@rD
29.07.2007, 18:25
TCaption = type string;
=/ юзай иногда ctrl+клик левой кнопкой мыши

Скажите как сделать чтобы копка бутон была не октивной (прозрачной типа), а потом как в оба поле (edit) были введены символы нужной длины кнопка становилась активной (видлемой и рабочей).

1. изначально у button1 свойство Enabled = false
2. Событие OnKeyDown у Edit1
if ((Length(edit1.Text) = Нужная_Длинна_Символов_В_Edit 1) and (Length(edit2.Text) = Нужная_Длинна_Символов_В_Edit 2)) then button1.Enabled:=True else Button1.Enabled:=False;
3. Событие OnKeyDown у Edit2
тоже что и во 2-м пункте...

собственно и все =/
P.S. юзаем безопасный код =/
Вариантов туева куча... =/

Скажите, как отлавливать ошибки в Indy IDHTTP? Есть ли там аналог "OnError"?
блок
try
...
except
не подходит?
когда возникает ошибка...
дай код...

хз... по мойму нет типа OnError

Оффтоп
P.S. "Increase Size" и "Decrease Size" вообще в 1 раз заметил =/ можно цвет изменить либо у панели, либо у надписи? (не слепой =/ )

Ci5
29.07.2007, 18:36
За видимость объекта отвечает свойство Visible. А Enabled просто позволяет совершать над ним какие либо действия, если установлено значение true...

Да знаю я это. Я просто не понял. Ему начали давать советы и везде используют Enabled. Я подумал, может я такой тупой что не могу догнать. А так тогда получится

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (length(combobox1.text)=длина) and (length(edit1.text)=длина) then
button1.visible:=true;
end;

И нуно еще в свойствах формы врубить KeyPreview в True; (в свое время когда забывал это ставить и код не работал когти рвал не тока на руках... :) )

W!z@rD
29.07.2007, 18:38
FormKeyUp Событие реагирующее на "Отпускание клавиши" aka поднятия пальца с клавиши =/
и при чем тут KeyPreview...
KeyPreview обычно ставят в true когда работают с горячими клавишами =)

Fen-Omen
29.07.2007, 18:40
К чему флудить, рабочий код уже был дан

Xserg
30.07.2007, 21:10
что тут может быть неправильно В приведенном участке кода нахватает одного end-а http://img504.imageshack.us/img504/4343/bmyi9.gif

t04
31.07.2007, 15:15
подскажите редактор ресурсов, что бы можно было создавать и редактировать *.res диалоги. В делфи нет ни одного такого редактора. А когда хочешь что то на апи написать то не знаешь как быть. только хочеться что бы редактор весил мало, ато у меня есть который идет с визуал студио 2005. так весь пакет прог весит более гБ, хочеться чтобы не больше 1 мБ весил.

LEE_ROY
31.07.2007, 15:32
ResHacker / Restorator

NeXArmAor
31.07.2007, 15:34
t04 ,ResHacker (http://www.cracklab.ru/download.php?action=list&n=NQ==)

[=IZERLI=]
31.07.2007, 18:07
Подскажите книги ,или у кого может есть статьи по програмингу на Delphi
в которых разбираются приемы которые полезны при разработке софта на делфи для взлома.Короче собрался писать программу поиска всевозможных уязвимостей & перебора кол-ва полей при sql-inj.

Fen-Omen
31.07.2007, 19:02
Я думаю достаточно просто знать как это реализуется. Например изучив метод перебора кол-ва полей при sql-inj, и поняв его - написать программу, которая автоматизирует этот процесс не займет много времени...

Joker-jar
31.07.2007, 20:27
Короче все, кто кодит на Делфи, но не вооружен DRKB, бегом качаем. http://drkb.ru/ Полезно =)

Xserg
31.07.2007, 21:25
Короче все, кто кодит на Делфи, но не вооружен DRKB, бегом качаем. http://drkb.ru/ Полезно =)Короче delphi для тех кто умеет кодить , для умелых (ленивыфф) профессионалов. Остальные учим Си ++ , + , ,и, пригодится, всегда. --- … // излишне

W!z@rD
31.07.2007, 21:54
']Подскажите книги ,или у кого может есть статьи по програмингу на Delphi
в которых разбираются приемы которые полезны при разработке софта на делфи для взлома.Короче собрался писать программу поиска всевозможных уязвимостей & перебора кол-ва полей при sql-inj.
бррр...
как ты будешь писать??!
новички с hello world начинают, а ты со скуля... лол no comments...
насчет литературы

delphiworld.narod.ru
drkb.ru
vingrad.ru
sources.ru
delphikindoms
rsdn aka msdn

авторы
Архантельский
Фаронов

Piflit
31.07.2007, 22:06
авторы
Архантельский
Фаронов

еще Культин и Фленов

slesh
31.07.2007, 22:40
Попрощу без оскорблений дельфистов - дельфа ничем не хуже С++
а в некоторых вещах даже лучше.
А те кто юзают стандартные компоненты - особенно Indy - ту НУБЫ ГЫ Гы гы.
;)

m1n0r
01.08.2007, 23:58
Народ, подскажите плиз как реализовть механизм Drag-and-Dock так, чтобы одна форма прилипала к другой при перетаскивании той формы, кторая должна прилипнуть, на ту форму, к котрой она должна прилипнуть примерно на 5-6 пикселей???

X-lord
02.08.2007, 04:03
конечнечно глупый вопрос..., но всёже: как сделать так, чтобы опендиалог мог выбирать и папку и файл...? и возвращал путь как папки так и файла...?

Joker-jar
02.08.2007, 07:51
ИМХО, никак. Для папок используй SelectDirectory

W!z@rD
02.08.2007, 08:33
Народ, подскажите плиз как реализовть механизм Drag-and-Dock так, чтобы одна форма прилипала к другой при перетаскивании той формы, кторая должна прилипнуть, на ту форму, к котрой она должна прилипнуть примерно на 5-6 пикселей???

вот взял из DelphiWorld *статья!

webFile.ru/1485945

X-lord
02.08.2007, 08:34
ИМХО, никак. Для папок используй SelectDirectory

нужно выбирать и файл и папку в одном диалоге...

W!z@rD
02.08.2007, 08:59
конечнечно глупый вопрос..., но всёже: как сделать так, чтобы опендиалог мог выбирать и папку и файл...? и возвращал путь как папки так и файла...?
1. вариант как сказал Joker использовать SelectDirectory находится в FileCtrl, и OpenDialog
2. OpenDialog для файла, вернет путь к файлу, для дириектории просто убираешь имя файла из полного пути, получая путь к файлу т.е. директорию...
3. Писать самому используя компоненты с заголовка Samples: ShellTreeView, ShellComboBox, ShellListView

вот на все 3 варианта исходник:
webfile.ru/1485950

Joker-jar
02.08.2007, 09:05
Да, думаю придется самому тебе мутить такой диалог. Только учти нюанс - папку можно выбрать, а можно войти в нее, чтоб выбрать подпапку или файл. Через контекстное меню скорей всего придется реализовывать это.

Nightmarе
04.08.2007, 14:26
В общем САБЖ, очень нужен модуль или код на делфи с помощью которого можно пароли из оперы достать...
Наш знакомый coban2k выкладывал много модулей которые получают разные пароли, там от ICQ 2003b, IE, Total comander outlok и т.д...
Самых актуальных там не было, это для QIP ну и соответстнно от оперы, я тут нашёл программу с исходником как получить пароли квипа, ну и с другом сделали собственный модуль поиска\декрипта паролей, но с оперой как быть я даже не знаю, если кто может помочь, то будет супер!!!

X-lord
04.08.2007, 16:03
Да, думаю придется самому тебе мутить такой диалог. Только учти нюанс - папку можно выбрать, а можно войти в нее, чтоб выбрать подпапку или файл. Через контекстное меню скорей всего придется реализовывать это.

сделал проще...
компонент ShellTreeView
свойство:Path.
кнопки: Select, Cancel.

W!z@rD
04.08.2007, 17:33
В общем САБЖ, очень нужен модуль или код на делфи с помощью которого можно пароли из оперы достать...
Наш знакомый coban2k выкладывал много модулей которые получают разные пароли, там от ICQ 2003b, IE, Total comander outlok и т.д...
Самых актуальных там не было, это для QIP ну и соответстнно от оперы, я тут нашёл программу с исходником как получить пароли квипа, ну и с другом сделали собственный модуль поиска\декрипта паролей, но с оперой как быть я даже не знаю, если кто может помочь, то будет супер!!!

1. это ты к гринам обратился что-ль?
2. вобщем я не понимаю людей которые все время потрошат инет на наличие сорцов - дерущие пассы =\
coban2k создал пинч... на основе пинча уже куча клонов... как-то люди умудрятся же =/
помниться давно ~1 год назад... я просил у него модули расшифровки пассов... от проги mpr (Multi Password Recover)... ну тогда не понимал чего прошу... в действительности зачем отдавать то над чем пыхтишь? сам сидишь работаешь с отладчиком и т.д.
3. по теме... разве в пинче нет модуля? должен же быть...

Piflit
04.08.2007, 17:40
W!z@rD для новые квипов (8010+ вроде) нет.
кстати можно просто асмовые вставки готовых модулей сделать=)

Zitt
04.08.2007, 17:47
есть два поля (edit1 и edit2) можно ли БЕЗ объявления доп. переменных осуществить проверку ввода кроме как
if (Edit1.text;='') or (Edit2.text='') then
???

Piflit
04.08.2007, 18:01
есть два поля (edit1 и edit2) можно ли БЕЗ объявления доп. переменных осуществить проверку ввода кроме как
if (Edit1.text;='') or (Edit2.text='') then
???

чем тебя твой вариант не устраивает?

Zitt
04.08.2007, 18:09
Другой нужно...

Joker-jar
04.08.2007, 18:30
if length(Edit1.Text) = 0 then ...
это ведь тупо... лучше скажи, чем не устраивает, и чего хочешь добиться

Zitt
05.08.2007, 01:02
какая разница почему то не устраивает считай что из-за моих религиозных убеждений =))
Хочу проверку... )
Joker-jar, не то...

Joker-jar
05.08.2007, 09:38
Просто мы не можем понять, что нужно то :) Как я понял, нужно определить, что один из двух едитов пуст, но не через if (edit1.text) or (edit2.text) then ... Да?

Zitt
05.08.2007, 16:30
Надо проверку на то что оба edita не пусты
но не через if (edit1.text) or (edit2.text) then ... Да?
Да

Ni0x
05.08.2007, 16:52
Пример на С, но на дельфи перевести за минуту можно.

//WM_GETTEXT в помощь
char buf[128];
SendMessage(hWndEdit, WM_GETTEXT, sizeof(buf), (LPARAM)buf);

Дальше проверяй буффер

KEZ
05.08.2007, 17:51
Вообще-то для этого есть GetWindowTextLengthA() в user32.dll
Возвращает длинну текста в окне. Если 0 - пустое.

Zitt
05.08.2007, 18:13
спасибо, сдела вот так
a:=Length(edit1.text);
b:=Length(a);
if a=0 then
ток не смейтесь +))

Fata1ex
05.08.2007, 18:20
>БЕЗ объявления доп. переменных
?

Zitt
05.08.2007, 18:24
пох пусть с переменными будет))
Потрите а то я тут нафлудил))

z01b
06.08.2007, 20:39
Ктото может дать реально работаюший пример на хук на TerminateProcess?

LEE_ROY
06.08.2007, 21:04
library Hook;

uses
Windows,
AdvApiHook,
NativeAPI;

var
TrueZwTerminateProcess:Function (ProcessHandle:dword;
ExitStatus:dword):NTStatus;stdcall;
//
function NewZwTerminateProcess (ProcessHandle:dword;
ExitStatus:dword):NTStatus;stdcall;
var
pid: DWORD;
MyHandle: DWORD;
begin
pid:=GetProcessId('Explorer.EXE'); //так для примера :)
MyHandle:=OpenProcess(PROCESS_ALL_ACCESS, false,pid);
if MyHandle = ProcessHandle
then
MessageBox(0, 'Нашёлся :)', 'Проверка', MB_ICONINFORMATION or MB_OK)
else
TrueZwTerminateProcess(ProcessHandle, ExitStatus);
end;
procedure LibraryProc (Reason : integer);
begin
case Reason of
DLL_PROCESS_ATTACH : //событие присоединения к процессу
begin
//ставим хук
HookProc('ntdll.dll', 'ZwTerminateProcess', @NewZwTerminateProcess, @TrueZwTerminateProcess);
end;
DLL_PROCESS_DETACH :
//Отсоединение от процесса
// снимаем хук
begin
UnhookCode(@TrueZwTerminateProcess);
end;
end;
end;
begin
DllProc := LibraryProc;
DllProc (DLL_PROCESS_ATTACH);
end.

zl0y
07.08.2007, 10:09
Подкиньте пример работы с aplib только без FileStream =)) тоесть sysutils мне совершенно не надо.

Ni0x
07.08.2007, 10:22
http://sources.codenet.ru/file/710/exefog-1.1-sources.rar

z01b
07.08.2007, 14:57
Lee_Roy. +1

infernal-team
09.08.2007, 14:26
Подскажете как сделать чтобы при нажатии буттон открывался опен диалог.

infernal-team
09.08.2007, 14:29
Совсем забыл как убрать с опен диалога вкладки котороые находяться слева (мой компьютер, мои документы и прочие) !!!

Ch3ck
09.08.2007, 15:33
Подскажете как сделать чтобы при нажатии буттон открывался опен диалог.
Простой пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Memo1.Lines.LoadFromFile(OpenDialog1.Filename);
end;
end.

убрать с опен диалога вкладки
По-моему нельзя их убрать...

infernal-team
09.08.2007, 15:39
ВыДаеТ вот такие ошибки:

[Error] Unit4.pas(33): Undeclared identifier: 'Memo1'
[Error] Unit4.pas(33): Missing operator or semicolon
[Fatal Error] Project1.dpr(8): Could not compile used unit 'Unit4.pas'

В чем дело?

infernal-team
09.08.2007, 15:40
Все разобрался эта строка лишняя - Memo1.Lines.LoadFromFile(OpenDialog1.Filename); !!!

NetMan
09.08.2007, 15:45
OpenDialog1.OptionsEx:=[ofExNoPlacesBar];

Piflit
09.08.2007, 15:54
По-моему нельзя их убрать...


Я видел в какойто программе. х3 может ты и прав.

вроде от системы зависит

infernal-team
09.08.2007, 15:54
По-моему нельзя их убрать...

Видел в какойто программе, хотя х3 может ты и прав.

infernal-team
09.08.2007, 15:56
А как сделать когда в опен диалоге выбираеш файл чтобы он был виден в едит. (тоесть полный путь для файла.

Ch3ck
09.08.2007, 15:59
Сверхънаглость.

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then Edit1.Text:=OpenDialog1.FileName;
end;
end.

infernal-team
09.08.2007, 16:11
Dr.Check + 1, большое спасибо !!!

PandoraBox
10.08.2007, 23:15
OpenDialog & SaveDialog на WinAPI как можно провернуть?

Ch3ck
10.08.2007, 23:19
GetOpenFileName и GetSaveFileName

PandoraBox
10.08.2007, 23:22
GetOpenFileName
uses Windows,Messages;

Ch3ck
10.08.2007, 23:28
uses Windows,Messages;
И... Continue...

PandoraBox
10.08.2007, 23:32
CommDlg :)

Nightmarе
11.08.2007, 03:37
1. это ты к гринам обратился что-ль?
1) Это мой стиль.
2) Они не грины, а гринписовцы.

2. вобщем я не понимаю людей которые все время потрошат инет на наличие сорцов - дерущие пассы =\

А я не понимаю зачем нужно разводить оффтоп.
Я задал вопрос... в нужной теме, даже не создал пару лшних топиков...

coban2k создал пинч... на основе пинча уже куча клонов... как-то люди умудрятся же =/

Пинч мы с ним вместе писали... {шутка}

я просил у него модули расшифровки пассов...

Мдаа... и какого ты щас понты гнёшь??? В своё время спрашивал, а как другой так дeло в ином формате.. низч0т...

3. по теме... разве в пинче нет модуля? должен же быть...
Я спросил модуль для оперы, а не просто модуль, там его и в помине не было...

Вообще обидно конешн читать такие ответы...

KEZ
11.08.2007, 04:08
если у кого там есть для оперы wand.dat расшифровщика сорцы - скиньте пожалуйста в ПМ или ещё куда-нибудь, не могу найти сорец unwand.cpp
и ещё про opera/mail/accounts.ini тоже

W!z@rD
12.08.2007, 00:06
Kez почисти пм =/... отправил...

Nightmarе ну извини я нуб... =/

xaker-boss
14.08.2007, 11:15
Люди нужна ваша помощь, нашол я тут одну интересную программку(злобного в ней нечего нет!)скачайте, посмотрите, мош кто может написать такуюже на Delphi ?
www.forum-mp3.org/qwp.rar

W!z@rD
14.08.2007, 14:04
xaker-boss
запросто... давай постановку задачи сделаю...

xaker-boss
14.08.2007, 14:52
Огромное спасибо W!z@rD лови +

Legion™
14.08.2007, 15:25
Доброго времени суток!
Интерессует, как можно скопировать текст выделенный в любом активном приложении.
Т.е. открыто например опера\блокнот\ворд или что-то ещо, фокус сейчас находится у этого приложения и выделен какой-то текст, как из моей программы получить текст выделенный в этом приложении?

da_ff
14.08.2007, 19:37
лучше следи за буфером обмена и его изменением

Legion™
14.08.2007, 19:53
Дело в том, что мне нужно именно создать "свой" буфер обмена только для текста, с хоткеями и вставкой текста в активный контрол все просто, а вот с копированием...

b2mbey
16.08.2007, 08:15
Народ, такая проблема...
Я на Дельфях налабал, программулинку-игрушку (сестренка, очень просила), но вот проблема... я лабал на Буке с разрешением экрана 1400х1050.. А у сестренке на компе разрешение намного меньше... Так вот форма не помещаеться на экране... Лабать на нужное разрешение, как то не правильно... Так вот вопрос... Как научить форму пропорционально уменьшаться вместе с элементами которые на ней, если она не помещаеться на экране? Может сталкивался кто???
ПС. Может кто то скажет, типа уменьши просто элементы на форме... Так вот скажу... Когда начинал лабать как то не подумал про разрешение... Но форма набита подзавязку картинками, поэтому уменьшать что то будет проблематично... Да и картинки в фотожопе нарезал именно под этот размер, а когда картинка меншье уже трудновато разобрать что там нарисованно... ПОэтому пока вижу выход только в учении формы пропорционально уменшаться... Заранее спасибо... Приму любые мысли и идеи...

ПС. Прошу прощения за мой русский... (когда сам прочитал, ничего не понял :D )

FeraS
16.08.2007, 08:27
b2mbey
Так вроде никак теперь не изменить. Попробуй поставить себе разрешение маленькое (типо 800x600) и запусти какую-нить софтину - она тоже будет не подходящего размера

b2mbey
16.08.2007, 08:35
b2mbey
Так вроде никак теперь не изменить. Попробуй поставить себе разрешение маленькое (типо 800x600) и запусти какую-нить софтину - она тоже будет не подходящего размера
Да...нет... я встречал несколько раз софтины которые умели это делать... Редко конечно встречаются, но все же есть... Я думаю, что такое возможно... Только как???

LEE_ROY
16.08.2007, 08:46
тебе нужно при запуске считать разрешение экрана, и взависимости от разрешения динамически построить форму. Тоесть размеры ты должен указывать не в Object Inspector, а самом коде, например в OnCreate :
if (тут резалт от функц. получение разрешения 800x600) then
Form1.Width := нужное число;
Form1.Height := нужное число;

b2mbey
16.08.2007, 08:51
тебе нужно при запуске считать разрешение экрана, и взависимости от разрешения динамически построить форму. Тоесть размеры ты должен указывать не в Object Inspector, а самом коде, например в OnCreate :
if (тут резалт от функц. получение разрешения 800x600) then
Form1.Width := нужное число;
Form1.Height := нужное число;
Я как бы этот вариант тоже продумывал, но, как я уже писал выше, у меня на форме очень много элементов, которые тоже надо будет уменьшаться...
Хороший совет, но я его уже на крайний случай оставлю...

ПС. Прошу прошения за мой русский!

itsme
16.08.2007, 10:05
А как ты хочешь сделаешь меньше форму если не хочешь уменьшать картинки???

вот тут небольшая статейка с delphiworld помойму,(не дал ссылку так как статья давно лежит у меня на компе и адреса я не знаю) о том как нужно делать программы под разные разрешения:

Статья:

На ранней стадии создания приложения решите для себя хотите ли вы позволить форме масштабироваться. Преимущество немасштабируемой формы в том, что ничего не меняется во время выполнения. В этом же заключается и недостаток (ваша форма может быть слишком маленькой или слишком большой в некоторых случаях).
Если вы Е собираетесь делать форму масштабируемой, установите св-во Scaled=False и дальше не читайте.
В противном случае Scaled=True.

Установите AutoScroll=False. AutoScroll = True означает не менять размер окна формы при выполнении что не очень хорошо выглядит, когда содержимое формы размер меняет.

Установите фонты в форме на TrueType фонты, например Arial. !!!!: Если такого фонта не окажется на пользовательском компьютере, то Windows выберет альтернативный фонт из того же семейства. Этот фонт может не совпадать по размеру, что вызовет проблемы.

Установите св-во Position в любое значение, отличное от poDesigned. poDesigned оставляет форму там, где она была во время дизайна, и, например, при разрешении 1280x1024 форма окажется в левом верхнем углу и совершенно за экраном при 640x480.

Оставляйте по-крайней мере 4 точки между компонентами, чтобы при смене положения границы на одну позицию компоненты не " наезжали" друг на друга.

Для однострочных меток (TLabel) с выравниванием alLeft или alRight установите AutoSize=True. Иначе AutoSize=False.
Убедитесь, что достаточно пустого места у TLabel для изменения ширины фонта - 25% пустого места многовато, зато безопасно. При AutoSize=False Убедитесь, что ширина метки правильная, при AutoSize=True убедитесь, что есть ссвободное место для роста метки.

Для многострочных меток (word-wrapped labels), оставьте хотя бы одну пустую строку снизу.

Будьте осторожны при открытии проекта в среде Delphi при разных разрешениях. Свойство PixelsPerInch меняется при открытии формы. Лучше тестировать приложения при разных разрешениях, запуская готовый скомпилированный проект, а редактировать его при одном разрешении. Иначе это вызовет проблемы с размерами.
Не изменяйте свойство PixelsPerInch !

В общем, нет необходимости тестировать приложение для каждого разрешения в отдельности, но стоит проверить его на 640x480 с маленькими и большими фонтами и на более высоком разрешении

Уделите пристальное внимание принципиально однострочным компонентам типа TDBLookupCombo. Многострочные компоненты всегда показывают только целые строки, а TEdit покажет урезанную снизу строку. Каждый компонент лучше сделать на несколько точек больше.

как узнать разрешение


Разместите в обработчике события формы (которую вы хотите автомасштабировать) OnCreate следующую строку:

Если форма масштабируемая:

В событии формы OnCreate()
Код:
AdjustResolution(Self);


Код:
{ AdjustResolution ************************************************** ***** }
{ Данная процедура масштабирует все дочерние формы данной формы для }
{ соответствия текущему разрешению }
{ ************************************************** ********************** }
procedure AdjustResolution(oForm:TForm);
var
iPercentage:integer;
begin
if Screen.Width > 640 then
begin
iPercentage:=Round(((Screen.Width-640)/640)*100)+100;
oForm.ScaleBy(iPercentage,100);
end;
end;


Как получить разрешение монитора и т.д. на любом сайте по Дельфи...

b2mbey
16.08.2007, 10:36
itsme
Спс.. . о чень дельная инфа... думаю что теперь разберусь...
А насчет картинок, я имел ввиду, что если разрешение у монитора большое, то смотрим хорошие картинки, а если уж маленькое, то тогда придеться жертвовать...

W!z@rD
16.08.2007, 13:21
дык... не мучаться а из JVCL взять компонент JvFormAutoSize
автоматически подгоняет размеры контролов...

b2mbey
16.08.2007, 18:12
дык... не мучаться а из JVCL взять компонент JvFormAutoSize
автоматически подгоняет размеры контролов...
А где взять этот JVCL???

NetMan
16.08.2007, 19:04
А где взять этот JVCL???
http://homepages.borland.com/jedi/jvcl/

W!z@rD
16.08.2007, 20:23
хек еще и тут:

http://jvcl.sourceforge.net/

b2mbey
17.08.2007, 10:07
хек еще и тут:

http://jvcl.sourceforge.net/
Огромное спасибо, дельный набор компонент!!!

W!z@rD
18.08.2007, 06:02
ShowWindow(Application.Handle, SW_HIDE);
делаешь при событие у формы OnActivate
убрать из Панели...

infernal-team
18.08.2007, 10:59
Задача заключается в следующем: нужно чтобы при вводе данных в ComboBox2 и Edit1, при нажатии Button1 открывалась следующая форма и данные введенные в ComboBox2 и Edit1 отправлялись мне на e-mail или в ICQ !!! Надеюсь на помощь !!!

Nightmarе
18.08.2007, 12:54
Да да... как сделать отправку в ICQ???
Только не трогая компонент eICQ от coban2k...

Ni0x
18.08.2007, 12:55
Думаю, тебе легче всего будет сделать через гейт. С помощью сокетов или wininet функций передавай данные с эдитов через get/post скрипту, который уже будет посылать их тебе на почту и тд.

fremax
18.08.2007, 13:12
Есть пога, которая хранит некоторые настройки в файле *.xml
Я открываю через свою прогу этот файл в текстовом режиме. Дописываю в него текст и закрываю. Проблема в том что если текст был русским, то та программа потом не отображает его, а если англ., то все норм.
Примечания.
Если файл xml открыть блокнотом, то можно увидеть строку encoding="utf-8"
До открытия файла моей програмкой русский текст (если он присутствовал в файле) отображается нормально, но после добавления нового текста моей прогой имющийся до этого русский текст в файле заменяется на что-то типа "ерер"
Помогите разобраться.