Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2008, 01:32   #1
Rend1
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 26
По умолчанию объясните код

unit MainFrm;

interface

uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Buttons, ExtCtrls, ColorGrd, StdCtrls, Menus, ComCtrls;

const
crMove = 1;
type

TDrawType = (dtLineDraw, dtRectangle, dtEllipse, dtRoundRect,
dtClipRect, dtCrooked);

TMainForm = class(TForm)
sbxMain: TScrollBox;
imgDrawingPad: TImage;
Вот код непонятно следующее 1.почему константа объявлена имменно в этом месте и можно ли объявить ее после implementation 2.дайте ссылку где прочитать о clMove и dt... в HELP найти не могу.3чем отличаются процедуры в type и public прочитал кучу литературы но нигде прямо не сказано
Rend1 вне форума Ответить с цитированием
Старый 01.02.2008, 02:45   #2
n@sok
Пользователь
 
Регистрация: 24.11.2007
Сообщений: 46
По умолчанию

1. Если константа будет объявлена после implementation, она не будет доступна другим модулям, ссылающимся на этот модуль и использующим эту константу. В данном случае таких модулей нет, поэтому константу можно объявить где угодно до первого ее использования.
2. crMove и dt... - это идентификаторы, придуманые программистом и предназначены для облегчения чтения программы. crMove - имя константы, любое ее появление в тексте будет заменяться на значение 1. dt... - значения, которые может принимать переменная типа TDrawType.
3. Методы, объявленные в private могут вызываться только из других методов того же класса, а методы, объявленные в public, также из любого другого места программы, где объявлен объект данного класса.
n@sok вне форума Ответить с цитированием
Старый 01.02.2008, 06:33   #3
Rend1
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 26
По умолчанию

пробую сделать сканер портов из книги "Dlphi глазами хакера" и там нужно дописать в ручную функцию а Delphi ругается что не знает такой функции ючто делать?
Rend1 вне форума Ответить с цитированием
Старый 01.02.2008, 08:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
что делать?
Выяснить откуда такая функция взялась )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2008, 08:36   #5
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

Public- процедуры доступные из других модулей данного проекта,
Private- в рамках этого модуля.
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 01.02.2008, 11:00   #6
Rend1
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 26
По умолчанию

1ювопрос в следующем если процедуру из public записать в type то что изменится.
To Stilet
объясни подробно
Rend1 вне форума Ответить с цитированием
Старый 01.02.2008, 11:23   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
объясни подробно
Всмысле? Откуда я то могу знать что за пример ты изучаешь? я ж не телепат. Вот приведи код тогда подумаем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2008, 13:20   #8
Rend1
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 26
По умолчанию

пример
Код:
procedure TForml.ButtonlClick(Sender: TObject);
var
i,j,s, opt, index: Integer;
FSocket: array [0..41] of TSOCKET; //Массив сокетов
//Массив, в котором будет храниться информация о каждом сканируемом со-
кете
busy
port
addr
hEvent
fset
tv
tec
array [0..41] of boolean;
array [0..41] of integer; //Массив сканируемых портов
TSockAddr;
THandle; //Объект для обработки сетевых событий
TFDset;
TTimeval;
PServEnt;
PName:String;
GInitData : TWSADATA;
begin
//Устанавливаем максимальное и минимальное значение полоски
//состояния сканирования. Минимум — начальный порт сканирования,
//максимум — конечный порт
ProgressBarl.Min:=StrToInt(StartPortEdit.Text);
ProgressBarl.Max:=StrToInt(EndPortEdit.Text);
//Инициализируем WinSock
WSAStartup(MAKEWORD(2,0), GInitData);
//Записываем в переменную i значение начального порта
i:=StrTo!nt(StartPortEdit.Text);
//Заполняем основные поля структуры addr, которая будет использоваться
//при вызове функции connect
addr.sin_family := AF_INET;
addr.s in_addr.s_addr := INADDR_ANY;
//Выводим сообщение о том, что начат поиск введенного хоста
DisplayMemo.SelAttributes.Color:=clTeal;
DisplayMemo.SelAttributes.Style:=
DisplayMemo.SelAttributes.Style+[fsBold];
DisplayMemo.Lines.Add('Поиск хоста');
if FD_ISSET (FSocket[j], fset) then
begin
('Хост:'+AddressEdit.Text+': порт :'
+IntToStr(Port[j])+' ('+Pname+') '+' открыт ');
end;
end;
//Закрыть j-й сокет, потому что он больше уже не нужен
closesocket(FSocket[j]);
end;
//Увеличиваем позицию в ProgressBarl
ProgressBarl.Position:=i;
end;
//Закрываем объект событий
WSACloseEvent(hEvent);
//Вьшодим сообщение о конце сканирования
DisplayMemo.SelAttributes.Color:=clTeal;
DisplayMemo.SelAttributes.Style:=
DisplayMemo.SelAttributes.Style+[fsBold];
DisplayMemo.Lines.Add('Сканирование закончено...');
ProgressBarl.Position:=0;
end;
проблемная функция
function TForml.LookupName: TInAddr;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
if Pos(\', AddressEdit.Text)>0 then
InAddr.s addr := inet addr(PChar(AddressEdit.Text);
Сеть на низком уровне 223
else
begin
i
HostEnt := gethostbyname(PChar(AddressEdit.Text));
FillChar(InAddr, SizeOf(InAddr), 0);
if HostEnt <> nil then
begin
with InAddr, Hos4tEntA do
begin
S_un_b.s_bl := h_addrл[0];
S_un_b.s_b2 := h_addrA[1];
S_un_b. s_b3 : = h_addr/s [ 2 ] ;
S_un_b. s_b4 : = h_addr~ [ 3 ] ;
end;
end
end;
Result := InAddr;
end;
код неполный

From Stilet: Для оформления кода есть специальный тег

Последний раз редактировалось Stilet; 01.02.2008 в 13:40.
Rend1 вне форума Ответить с цитированием
Старый 01.02.2008, 13:37   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну и на какой строке она ругается? Или опять догадываться ?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2008, 14:13   #10
Rend1
Пользователь
 
Регистрация: 21.01.2008
Сообщений: 26
По умолчанию

я же специально написал проблемная функция в сомом низу не знаю куда ее вставить
Rend1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните скрипт Bemby Фриланс 1 14.08.2008 10:08
Объясните,плизззззз) Gaika Помощь студентам 9 02.07.2008 21:40
объясните что и как (ВычМат) zinnyrik Помощь студентам 1 18.06.2008 13:38