IdMultipartFormData [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Artist, 13 Sep 2010.

  1. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Переустановил Delphi7 и теперь нету метода Clear в IdMultipartFormData.
    Code:
    uses
      .., IdMultipartFormData;
    
    var
    data:Tidmultipartformdatastream;
    begin
    data:=Tidmultipartformdatastream.Create;
    [COLOR=Red]data.clear;[/COLOR]
    end;
    
    При попытке применить метод Clear вылазит ошибка.
    Хотя раньше все нормально было.
    [Error] Unit1.pas(): Undeclared identifier: 'clear'
    [Fatal Error] V.dpr(): Could not compile used unit 'Unit1.pas'
     
  2. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Обновить инди. В старых видмо версиях нету этого метода. Либо Free и заново создавать. Эффект тот же.
     
  3. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Нет в дельфи регистр не имеет значения.

    +1 Обнови инди, либо free
     
  4. Redeemer

    Redeemer Member

    Joined:
    3 Jul 2010
    Messages:
    203
    Likes Received:
    24
    Reputations:
    1
    Ты выполняешь эти два метода подряд? Если да, то просто убери Clear, в нем нет смысла. Только что созданный объект и так пустой.
     
  5. NemeZz

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

    Joined:
    20 Aug 2008
    Messages:
    102
    Likes Received:
    67
    Reputations:
    3
    да там по сути четко говорит, что эта процедура не зарегистрирована.
    [Error] Unit1.pas(): Undeclared identifier: 'clear'
    Так что её убирать нужно в любом случае,или обновлять Indy, или писать на сокетах, типа такого:
    Code:
    var boundary: String;
    
       boundary:='NemeZz_Byl_Zdes_';
       for i:=1 to 16 do
        boundary:=boundary+IntToStr(random(9));
    
        a:= TMemoryStream.Create;
    
        try
          cap_3.SaveToStream(a);
         except
            AddEvent('#!2105');
            sleep(1000);
            RestartMainThread(Stadia_6_kaps_joining);
         end;
       if a.Size<1000 then
        begin
         AddEvent('#!2105_4');
         RestartMainThread(Stadia_6_kaps_joining);
        end;
    
       a.Seek(0, soFromBeginning);
       SetLength(PostData,a.size);
       a.Read(Pointer(PostData)^,a.Size);
    
      except
       AddEvent('#!2106');
       RestartMainThread(Stadia_6_kaps_joining);
      end;
    
    
     try
    
      if cbTwoCap.Checked then
    
         tempstr:=   //несколько слов2
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="phrase"' + #13#10#13#10+
    
               '1' + #13#10+
    
    
               //несколько слов
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="is_phrase"' + #13#10#13#10+
    
               'on' + #13#10
      else
        tempstr:='';
    
      PostData:=tempstr+//Метод
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="method"' + #13#10#13#10 +
    
               'post'+#13#10+
    
               //Ключ
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="key"' + #13#10#13#10+
    
               ackey + #13#10 +
    
       //новая добавочка
               //ID Софта
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="soft_id"' + #13#10#13#10+
    
               '117' + #13#10 +
    
                //Регистр
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="regsense"' + #13#10#13#10+
    
               '1' + #13#10 +
    
               //Регистр2
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="is_reg"' + #13#10#13#10+
    
               'on' + #13#10 +
    
               //минимальная длина
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="min_len"' + #13#10#13#10+
    
               IntToStr(eCapMinLength.Value) + #13#10+
    
               //максимальная длина
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="max_len"' + #13#10#13#10+
    
               IntToStr(eCapMaxLength.Value) + #13#10 +
    
    
    
               //Содержимое
               '--'+boundary+#13#10+
               'Content-Disposition: form-data; name="file"; filename="capcha.jpg"'+#13#10+
               'Content-Type: image/pjpeg'+#13#10#13#10 +
    
               PostData + #13#10 +
               '--'+boundary+'--';
     except
       AddEvent('#!2108');
       RestartMainThread(Stadia_7_kaps_sending);
     end;
    
     try
      GetData:='User-Agent: ' + fMain.UserAgents.Items[fMain.UserAgents.ItemIndex]  + #13#10 +
               'Accept: text/html, */*' + #13#10 +
               'Connection: close'  + #13#10 +
               'Content-Type: multipart/form-data; boundary='+boundary + #13#10 +
               'Content-Length: ' +IntToStr(Length(PostData))+  #13#10#13#10 + PostData;
    Дальше к GetData добавляем куда запрос (в моем случае на антигейт), хост и соединяем - отправляем - получаем.

    На отсутствующие функции не обращайте внимания, внутренняя структура программы, выложил, чтобы был понятен принцип создания multipart/form-data на примере.
     
  6. Artist

    Artist Member

    Joined:
    10 Jul 2010
    Messages:
    89
    Likes Received:
    5
    Reputations:
    0
    Нет это просто для примера показал.

    Решил обновить Indy и нашел вот это:
    Статья http://kvendi.pp.ru/?p=66
    Сайт http://indyproject.org/index.en.aspx
    Откуда лучше качать новый indy? как узнать последнюю версию на данный момент?

    Установил Indy 10.5.7 и метод Clear снова появился))

    Дайте хорошую статью про сокеты... и где их скачать.
     
    #6 Artist, 13 Sep 2010
    Last edited: 13 Sep 2010
  7. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Ты не должен скачивать сокеты ))
    Они уже должны быть установлены, просто пропиши в uses модуль Winsock.

    Здесь есть несколько отличных статей о Winsock от slesh.
     
  8. NemeZz

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

    Joined:
    20 Aug 2008
    Messages:
    102
    Likes Received:
    67
    Reputations:
    3
    Artist, почитай статьи slesh-а на досуге, популярно пишет (конкретно тебе проще будет начать с первой и второй , можно глянуть сорцы /thread115403.html, обязательно в твоей теме будет прочтение исходник модуля для работы с sock5 прокси ). Так же нелишним будет почитать статьи Григорьева, если уж серьезно на сокетах хочешь кодить.

    Оффтоп
    Если бы сразу учился на статьях слеша - быстрее бы понял, у Григорьева все полно и супер, но уж очень много всего...