[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Dober'man

    Dober'man Banned

    Joined:
    16 Jul 2007
    Messages:
    70
    Likes Received:
    94
    Reputations:
    -8
    Ну так ведь после того как ты распределил, к примеру 10 номеров и пасов, указатели в этих файлах(файл с номерами и файл с паролями) сохраняются на последних записях, т.е. у тебя идет смена пароля только последнего уина...
    Можно сделать что-то типа: for i:=10 downto 1, либо закрыть и потом открыть файл, либо seek...

    update:

    А вообщем, я на твоем месте сделал бы типизированные файлы:
    Code:
    type NumberUin = record n: integer end;
    var f1: file of NumberUin; // файл с номерами уинов
    type PassUin = record p: string end;
    var f2: file of PassUin; // файл с паролями уинов
    
    С ними было бы по проще, да и представляются они в системе как двотчные...
     
    #1821 Dober'man, 7 Jul 2008
    Last edited: 7 Jul 2008
    1 person likes this.
  2. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Че-то парни вы мудрите :)
    вотъ набросал побыстрому как я вижу работу массового пассченжера:
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ICQClient, ICQWorks, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        ICQClient1: TICQClient;
        procedure Button1Click(Sender: TObject);
        procedure Change;
        procedure ICQClient1Login(Sender: TObject);
        procedure ICQClient1Error(Sender: TObject; ErrorType: TErrorType;
          ErrorMsg: String);
        procedure ICQClient1InfoChanged(Sender: TObject; InfoType: TInfoType;
          ChangedOk: Boolean);
        procedure ICQClient1LogOff(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
      source:TStringList;
      tmp,uin,pass:string;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Change;
    begin
     if source.Count>0 then
     begin
      tmp:=source.Strings[0];
      uin:=copy(tmp,1,pos(';',tmp)-1);
      pass:=copy(tmp,pos(';',tmp)+1,length(tmp));
      Memo1.Lines.Add(uin+' '+pass);
      ICQClient1.Password:=pass;
      ICQClient1.UIN:=StrToInt(uin);
      ICQClient1.ScreenName:=uin;
      ICQClient1.Login;
     end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     source:=TStringList.Create;
     source.LoadFromFile('source.txt');
     ICQClient1.ConvertToPlaintext:=True;
     ICQClient1.ICQServer:='login.icq.com';
     ICQClient1.ICQPort:=5190;
     Change;
    end;
    
    procedure TForm1.ICQClient1Login(Sender: TObject);
    begin
     Memo1.Lines.Add('con');
     ICQClient1.ChangePassword('newpass');
    end;
    
    procedure TForm1.ICQClient1Error(Sender: TObject; ErrorType: TErrorType;
      ErrorMsg: String);
    begin
     Memo1.Lines.Add(tmp+' Err: '+ErrorMsg);
     ICQClient1.LogOff;
    end;
    
    procedure TForm1.ICQClient1InfoChanged(Sender: TObject;
      InfoType: TInfoType; ChangedOk: Boolean);
    var fil;
    begin
     assignfile(fil,'changed.txt');
     if fileexists('changed.txt') then appendfile(fil)
      else rewrite(fil);
     writeln(fil,uin+';'+'newpass');
     closefile(fil);
     source.Delete(0);
     Memo1.Lines.Add(tmp+' Changed');
     ICQClient1.LogOff;
    end;
    
    procedure TForm1.ICQClient1LogOff(Sender: TObject);
    begin
     Memo1.Lines.Add('dis');
     Change;
    end;
    
    end.
    
     
    #1822 qPhoenix, 8 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  3. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    ScreenName убирай ) видать разные у нас TICQ

    ты эвенты onInfoChanged и OnLogoff привязал к компоненту?

    на всяк случай - юзал этот TICQ, старый напрочь отказывался работать - кричал "Версия клиента устарела"
     
  4. Intelekt

    Intelekt New Member

    Joined:
    17 Apr 2008
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Ребята, дайте пожалуйста ссылку, откудаможно скачать Delphi послебнюю версию. Заранее благодарен!!!
     
  5. Termo_90

    Termo_90 New Member

    Joined:
    2 Jul 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    А нафига последняя? Качай 7-мую и будь доволен... По моему эта самая распространенная
     
  6. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66

    Все бы ничего....кроме одной мелочи)
    -------------
    Всего лишь мелочи....
    -------------
    Заметь ты юзаешь цикл, а компоненту что бы залогинить номер нужно пару секунд!
    Вот теперь смотри, ты юзаешь(на form1) только один компонент, а цикл проходит быстро, следовательно номера не успевают залогиниться, коннектится только последний потому что он последний...
    -------------
    Выход из этой жопной ситуации:
    1) Юзать таймер - скорость маленькая
    2) Юзать массив компоненнтов - лучший выход.
    другому не быть...ля ля тополя - вот так вот...
    отсюда вывод код не верный!
    его надо переделывать....
    или же код верный но его надо втыкать в таймер, что приведет к другой жопе, к снижению скорости смены пароля...
    ----
    У меня все, спс за внимание:)
    ----------

    P.S. прет меня сорри
     
    2 people like this.
  7. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Юзай потоки, и забудь ты про компоненты, памяти сожрешь немеряно!
     
    1 person likes this.
  8. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Nightmarе
    Выложи архивчики с твоим TICQ и проектом, подправлю... а то смотрю не клеится у вас ниче в слепую :D
     
  9. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    посмотри мой пост, и поспрашивай про это у людей с асечки, видишь ли тут меня признали не правым...не люблю спорить...
     
  10. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Конечно цикл здесь неуместен, и код изначально дубообразный, но все же можно кримеру вставить ожидание while not ICQ.LoggedIn do sleep(1000); , али еще ченить придумать, но массив из *** коннектящихся компонентов это тоже перебор.. ;)
    ИМХО для такого вопроса нужно юзать евенты OnError OnLogoff OnInfoChanged, и отталкиваясь от них уже двигать дальше...
     
    #1830 qPhoenix, 12 Jul 2008
    Last edited: 12 Jul 2008
  11. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Без лишних слов.. код не рабочий и не может быть таковым )

    все таки рекомендую поставить этот http://ifolder.ru/7312654 TICQ и вотъ мой вариант проекта под него http://ifolder.ru/7312642
     
    1 person likes this.
  12. qPhoenix

    qPhoenix Banned

    Joined:
    15 Dec 2005
    Messages:
    87
    Likes Received:
    50
    Reputations:
    8
    Теперь и у мну вопросец тем кто сталкивался с TICQ )

    нужно тусануть его в консолку, но там он отказывается работать...
    Code:
    program Project2;
    
    {$APPTYPE CONSOLE}
    
    uses ICQClient, ICQWorks, Classes, SysUtils;
    
    var ICQ:TICQClient;
    
    begin
     UINs:=TStringList.Create;
     ICQ:=TICQClient.Create(nil);
     ICQ.UIN:=111222333;
     ICQ.Password:='pass';
     ICQ.Login;
     ....
    
    на данном этапе конектиццо к серверу авторизации принимает приветствие и молчит в ответ. как заставить работать? )
    при чем в аппликации все работает
     
    #1832 qPhoenix, 12 Jul 2008
    Last edited: 12 Jul 2008
  13. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Массив перебор????
    ты хакер парень!
    слов нет...
     
  14. art2222

    art2222 Elder - Старейшина

    Joined:
    28 Apr 2008
    Messages:
    118
    Likes Received:
    57
    Reputations:
    10
    Один из вариантов. А вообще была в какой то криге глава про быстрый сканер портов, у Фленова помоему Delphi глазами хацкера
     
  15. ..::TROYAN::..

    ..::TROYAN::.. Elder - Старейшина

    Joined:
    22 May 2008
    Messages:
    90
    Likes Received:
    116
    Reputations:
    14
    там на винсоЦк а мне нужно на инди , и там просто сканер портов а нужно сканер компов на один порт...шарил бы в винсок .......
     
  16. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    WinSock не сложный, лудше копай в его сторону + потоки
     
  17. Fen-Omen

    Fen-Omen Elder - Старейшина

    Joined:
    22 Mar 2007
    Messages:
    60
    Likes Received:
    88
    Reputations:
    60
    Это не намного сложней... Просто порт константный тогда, а менятся будет Ip.

    Если обязательно нужен indy компонент, создавайте динамически массив, из стольки компонент, сколько нужно.

    Ну и плюс таймаут установите, на подключение.
     
    #1837 Fen-Omen, 13 Jul 2008
    Last edited: 13 Jul 2008
  18. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    В инди куча ненужного когда ... В любом случае на winsock будет быстрее ...
    ЗЫ Троян на вцл - это круто =) Пешь есчо =) :cool:
     
    3 people like this.
  19. ..::TROYAN::..

    ..::TROYAN::.. Elder - Старейшина

    Joined:
    22 May 2008
    Messages:
    90
    Likes Received:
    116
    Reputations:
    14
    =)
    вощето клиент для троя))))
     
  20. Taktik

    Taktik Member

    Joined:
    27 Jun 2008
    Messages:
    27
    Likes Received:
    10
    Reputations:
    5
    (Delphi)Наверное самый тупой вопрос что был...Эх,ну я новичок,мне положено тупое постить :)
    Я писал программу типа Hello Word,тока я предпочёл написать калькулятор вместо этого...
    В общем там такое дело:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    e:=StrToInt(Edit1.Text);
    p:=StrToInt(Edit2.Text);
    sum:=e+p;
    Edit3.Text:=IntToStr(sum);
    end;
    
    В общем я знаю что код можно сократить,он не умно сделан и т.п. но смысл не в этом,дело в том что если ввести дробное число например 2.5 и 3.5,то приложение выдаст ошибку,тоесть тут надо юзать Real....вот это я и незнаю,как перевести String в Real,наподобие StrToInt...Я пробовал StrToReal-вроде не работает.*DONT_KNOW*
     
    4 people like this.
Thread Status:
Not open for further replies.