Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.051 c
1-1173789487
oleg__
2007-03-13 15:38
2007.05.06
TChart


15-1175693490
vasIZmax
2007-04-04 17:31
2007.05.06
Может кто-нибудь что-нибудь подскажет


4-1165170629
Dmitry_177
2006-12-03 21:30
2007.05.06
Узнать высоту, ширину, цвет точки HBITMAP-а без модуля Graphics


2-1176439226
npu3pak
2007-04-13 08:40
2007.05.06
Считывание данных из таблицы (базы)


3-1171717829
Kerk
2007-02-17 16:10
2007.05.06
[mysql] Лог скачиваний





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский