Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизВопросик... Найти похожие ветки
← →
Romm © (2007-04-13 14:20) [0]Здравствуйте, Мастера!
Возникла проблема, помогите решить.
Программа содержащая TClientSocket должна быть соединена одновременно с несколькими компами.Как это осуществить наиболее просто. Почему-то мне в ум приходит две мысли:
1)Каждую секунду менять IP или хост --> соединяться, разьединяться...
2)Создать много Сокетов(а так вообще прога работать будет?)...
может у кого есть идеи или советы какие?!
пасиб.
← →
Johnmen © (2007-04-13 14:23) [1]1) бредовая чушь или чешуёвый бред :)
2) вот это правильное слово
← →
Romm © (2007-04-13 14:39) [2]
> 1) бредовая чушь или чешуёвый бред :)
> 2) вот это правильное слово
гы гы.. не сомневался... а есть пример НЕ бредовой идеи?
Кстати, только что столкнулся с еще одной проблемкой:
инфу о машине где лучше хранить? С начала пытался запихать в ini файлы-не вышло-ведь машин может быть 5,10,400.. Ух..придется мозги в аварийный режим вводить))
← →
Johnmen © (2007-04-13 14:47) [3]Все идеи уже давно придуманы и озвучены :)
Напр. идея "один коннект - один поток".
Инфу о машине можно хранить где и как угодно. Всё зависит от требований к хранению.
← →
tesseract © (2007-04-13 14:50) [4]
> инфу о машине где лучше хранить? С начала пытался запихать
> в ini файлы-не вышло-ведь машин может быть 5,10,400..
Если имееться в виду как обнаруживать машины - UDP+Broadcast.
← →
Romm © (2007-04-13 14:56) [5]
> Инфу о машине можно хранить где и как угодно. Всё зависит
> от требований к хранению
пример:
[comp1]
name="xxx"
IP=127.127.127.127
[comp2]
name...
заголовки чтоли использовать?!..
> Напр. идея "один коннект - один поток".
даже так?..
← →
Johnmen © (2007-04-13 15:01) [6]
> пример:
пример - это не требования.
> даже так?..
Не побоюсь этого слова - ТОЛЬКО ТАК!
:)
← →
Romm © (2007-04-13 15:04) [7]Я что-то запутался совсем, направь на путь истинный в обоих вопросах, а то с я скоро с ума сойду :)
← →
Johnmen © (2007-04-13 15:10) [8]По первому - чтобы рекомендовать способ хранения, надо знать требования к хранению. Из тех скудных исх.данных, что ты привёл, можно рекомендовать типизированный файл в качестве хранилища.
По второму - для каждого сокет коннекшна, он же TSocketConnection, свой поток, он же тред, он же TThread.
← →
Сергей М. © (2007-04-13 15:16) [9]Потенциальное соединение с каждым сервером из списка требуемых предполагает отдельный экз-р TClientSocket для этого соединения.
Ы ?
← →
Romm © (2007-04-13 15:17) [10]
> тех скудных исх.данных, что ты привёл
а что там еще говорить?!
всего прога будет расчитана на 12 машин.Активируем 1 машину,настраиваем(имя и IP адрес-ВСЕ,больше ничего не нужно,пока :) ). Вот эти данные нужно каким-то образом сохранить, чтобы можно было прочитать:))))
← →
Johnmen © (2007-04-13 15:22) [11]Тогда однозначно типизированный файл.
← →
Romm © (2007-04-13 15:24) [12]
> типизированный файл
щаЗ попробую..
← →
Romm © (2007-04-13 15:28) [13]
> Потенциальное соединение с каждым сервером из списка требуемых
> предполагает отдельный экз-р TClientSocket для этого соединения.
>
вот и я про тоже...
← →
Romm © (2007-04-13 15:30) [14]а вот вопросик не в тему немножко)
пишу событие для 13-ти checkbox"ов
как получить какое-либо значение,например 10-ого checkbox"a??
пробую так:procedure TOptionForm.FormClick(Sender: TObject);
;
var
check:boolean;
begin
check:=CheckBox[10].Checked;
end
не получается(( неужели для всех нужно писать свой код((((
← →
Сергей М. © (2007-04-13 15:31) [15]
> Romm © (13.04.07 15:24) [12]
Надо же быть таким тупым)
Он говорит, мол, "хочу иметь один TClientSocket, одновременно (цитата !) соединенный с несколькими серверами", ему говорят "не получится", а он продолжает свое долдонить про свои ини-файлы))
← →
Romm © (2007-04-13 15:37) [16]Надо же быть таким тупым)
просто седня день такой)) пятница да еще и 13 :))мозг в отрубе
> один TClientSocket, одновременно (цитата !) соединенный
> с несколькими серверами
ну есть же проги,которые ОДНОВРЕМЕННО соединяются с несколькими серверами. (пишу прогу для удаленного управления компами).
← →
Сергей М. © (2007-04-13 15:39) [17]
> Romm © (13.04.07 15:37) [16]
> есть же проги,которые ОДНОВРЕМЕННО соединяются с несколькими
> серверами
Ну да, есть.
Но кто тебе сказал, что такие "проги" при этом используют один-единственный TClientSocket ?
И причем тут ini-файлы ?
← →
Romm © (2007-04-13 15:40) [18]Вот что я решил:
проше будет выбирать из списка машину -> жать Connect и управлять ей пока глаза не вылезут!!!!!!!//наверное и щас степил? :)
← →
Romm © (2007-04-13 15:42) [19]
ступил*
:)
> И причем тут ini-файлы
они с сокетами не связаны,почти )) в них инфу о компах хранить нужно..
← →
Сергей М. © (2007-04-13 15:49) [20]
> Вот что я решил
Хозяин - барин !)
← →
Johnmen © (2007-04-13 15:53) [21]
> пишу прогу для удаленного управления компами
"А впрочем, тебе рано ещё" (с)
← →
Romm © (2007-04-13 17:04) [22]
> "А впрочем, тебе рано ещё" (с)
у всех бывает первый раз! Вот вы с рождения програмистами были?!?!?!?!?!
← →
Romm © (2007-04-13 17:07) [23]Повторюсь:
а вот вопросик не в тему немножко)
пишу событие для 13-ти checkbox"ов
как получить какое-либо значение,например 10-ого checkbox"a??
пробую так:
procedure TOptionForm.FormClick(Sender: TObject);
var
check:boolean;
begin
check:=CheckBox[10].Checked;
end;
не получается(( неужели для всех нужно писать свой код((((
Вообще можно массив из компонентов создать?!
← →
Антоныч_ск (2007-04-13 18:00) [24]Ставиш каждому checkbox-у уникальное значение св-ва Tag, назначаешь им всем один и тот же обработчик какого-нибудь события (OnClick, например) и пишешь:
procedure TOptionForm.CheckBoxClick(Sender: TObject);
begin
ShowMessage("Щёлкнут CheckBox № "+IntToStr(TCheckBox(Sender).Tag));
end;
Усложняем по образцу.
Массив можно сделать из всего. Была бы необходимость :-)
← →
Romm © (2007-04-13 18:12) [25]
> Антоныч_ск (13.04.07 18:00) [24]
Пасиб - получилось)
А можешь пример массива этих самых CheckBox написать?
← →
Антоныч_ск (2007-04-13 18:23) [26]На вскидку примерно так:
Var
CheckBoxArray: array[1..10] of TCheckBox;
...
begin
...
for i:=1 to 10 do
begin
CheckBoxArray[i]:=TCheckBox.Create(OptionForm);
CheckBoxArray[i].Parent:=OptionForm;
CheckBoxArray[i].Left:=5;
CheckBoxArray[i].Top:=i*40+5;
CheckBoxArray[i].Height:=20;
CheckBoxArray[i].Width:=300;
CheckBoxArray[i].OnClick:=CheckBoxClick;
// и по образцу задаёшь нужные свойства
end;
end;
← →
Romm © (2007-04-13 18:33) [27]
> Антоныч_ск (13.04.07 18:23) [26]
сенск...)))))))))))))))пока вопросов нет
← →
Johnmen © (2007-04-13 18:34) [28]
> у всех бывает первый раз! Вот вы с рождения програмистами
> были?!?!?!?!?!
Нет конечно!
Да вот только я не начинал с "прогу для удаленного управления компами", не зная элементарных основ типа "как получить какое-либо значение,например 10-ого checkbox"a". И уж тем более не учился, прося других в стиле "слабо" решить мою элементарную "задачку" типа "А можешь пример массива этих самых CheckBox написать?".
← →
Romm © (2007-04-13 18:48) [29]
> Johnmen © (13.04.07 18:34) [28]
ну я спорить с тобой не буду)) НО
за сегодня я научился получать какое-либо значение, например 10-го chqckbox"a, научился создавать массивы элементов, благодаря хорошему человеку, который не говорил: "иди книги для чайников читай", а реально обьяснил... Ребят, если бы все так делали.. :)
← →
Romm © (2007-04-13 19:02) [30]
> Антоныч_ск (13.04.07 18:23) [26]
я поспешил немного :)
с динамическим массивом я разобрался, а вот если мне нужно сохранить значения уже созданных компонентов, то?..procedure TOptionForm.SaveParam;
var
F:TIniFile;
ArCheckBox: array[1..12] of TCheckBox;
i:Integer;
begin
F:=TIniFile.Create(ExtractFilePath(ParamStr(0))+"option.ini");
for i:=1 to 12 do
F.WriteBool("Checked",IntToStr(i),ArCheckBox[i].Checked);
F.Free;
end;
напиши пожалуста, если так можно вообще...
← →
Romm © (2007-04-13 19:05) [31]О! нашел статью..
{10 элементов компонентного типа TLed}
LED : array[1..10] of TLed;
//При необходимости динамического создания LED-компонентов организуйте цикл, пример которого мы приводим ниже:
for counter := 1 to 10 do
begin
LED[counter]:= TLED.Create;
LED[counter].top := ...
LED[counter].Left := ...
LED[counter].Parent := Mainform; {что-то типа этого}
end;
//Если компоненты уже присутствуют на форме (в режиме проектирования), //сделайте их элементами массива, например так:
leds := 0;
for counter := 0 to Form.Componentcount do
begin
if (components[counter] is TLED) then
begin
inc(leds);
LED[leds] := TLED(components[counter]);
end
end;
нужно попробовать....
← →
Anatoly Podgoretsky © (2007-04-14 13:30) [32]> Romm (13.04.2007 17:04:22) [22]
Тебе рано и не спорь, и не то что бы писать коммуникационный программы, но Hello Word. Начни с простого. Со сложения двух чисел например.
← →
Romm © (2007-04-14 13:36) [33]
> Со сложения двух чисел например
это как? :)
> Тебе рано и не спорь
знаю, но нужно, для дела... уже почти все готово.. почти.. %10 :))
← →
Stell (2007-04-17 14:20) [34]
> > Со сложения двух чисел например
>это как? :)
Это
function Add(Value1: integer; Value2: integer):integer;
begin
Result := Value1 + Value2;
end;
......
ShowMessage(IntToStr(Add(2,2)));
.....
:):)
← →
Romm © (2007-04-17 14:29) [35]
> Stell (17.04.07 14:20) [34]
будет над чем ночью подумать :)
> function Add(Value1: integer; Value2: integer):integer;
> begin
> Result := Value1 + Value2;
> end;
не проще такfunction Add(a, b: integer):integer;
begin
Result :=a+b;
end;
? :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.048 c