ايران ويج

نسخه‌ی کامل: تبدیل کد های جایگزین Winsock1 از VB به دلفی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام بچه ها من یه تازه کارم قبل باز کردن تاپیک خیلی ور رفتم ولی نشد احتیاج به کمک و مساعدت شما دارم

توی VB به :
نقل قول: Private Sub Command2_Click()
If Text1 = "" Then
MsgBox "Lotfan yek file entekhab konid", vbInformation, "NoFile"
Else
Winsock1.Close
Winsock1.Connect "ُSite.com", 80
جایگزین این کدها توی دلفی چی میشه !! و به جای Winsock1 توی وی بی در دلفی از چی استفاده کنیم .
و جای این کدهای Winsock1 :
نقل قول: Private Sub Winsock1_Connect()
Dim Pck As String
Pck = "POST /upload.php HTTP/1.0" & vbCrLf
Pck = Pck & "Referer: http://www.Site.com" & vbCrLf
Pck = Pck & "Accept-Language: en-us" & vbCrLf
Pck = Pck & "Content-Type: multipart/form-data; boundary=---------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Host: www.Site.com" & vbCrLf
Pck = Pck & "Content-Length: " & Len(dFile) + 1224 & vbCrLf
Pck = Pck & "Connection: Keep-Alive" & vbCrLf
Pck = Pck & "Pragma: no-cache" & vbCrLf & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""type""" & vbCrLf & vbCrLf
Pck = Pck & "direct" & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""userfile[]""" & "; filename=""" & CommonDialog1.FileName & """" & vbCrLf
Pck = Pck & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf
Pck = Pck & dFile & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""userfile[]""; filename=""""" & vbCrLf
Pck = Pck & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""userfile[]""; filename=""""" & vbCrLf
Pck = Pck & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""userfile[]""; filename=""""" & vbCrLf
Pck = Pck & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""userfile[]""; filename=""""" & vbCrLf
Pck = Pck & "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""private""" & vbCrLf & vbCrLf
Pck = Pck & "0" & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""x""" & vbCrLf & vbCrLf
Pck = Pck & "0" & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232" & vbCrLf
Pck = Pck & "Content-Disposition: form-data; name=""y""" & vbCrLf & vbCrLf
Pck = Pck & "0" & vbCrLf
Pck = Pck & "-----------------------------7d836b2120232--" & vbCrLf
Winsock1.SendData Pck
Text3 = ""
Label2.Caption = "Lotfan Montazer bemanid..."
End Sub
که در صورت عدم کارائی دستور داده شده به برنامه :
نقل قول: Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
If InStr(Data, """></td><td>Direct</td></tr>") > 0 Then
Text2 = Split(Split(Split(Data, """></td><td>Direct</td></tr>")(0), "</td><td>Mail File</td></tr>")(1), "name=""option"" value=""")(1)
Label2.Caption = "Upload Ba Movafaghiyat anjam shod."
MsgBox "Upload Ba Movafaghiyat anjam shod.", vbInformation, "OK"
End If
If InStr(Data, "General Error!") > 0 Then
Label2.Caption = "Upload Anjam nashod!!!"
میاد . جایگزین این کدها توی دلفی چی میشه .

امیدوارم دوستان و مدیران محترم وقت بکنند به من کمک کنند . خیلی مهمه برام (اول راهم)

پیشاپیش از همه دوستان کمال تشکر را دارمHeart
تو دلفی بخشهای winsock تخصصی تر شده و به صورت مجموعه کامپوننتهای indy در اومده شما برای ارتباط با صفحات وب باید از کامپوننت idhttp استفاده کنین به مثال زیر توجه کنین
مقدار ARequestContent مربوط به اطلاعاتی میباشد که بعد از ارسال اصلاعات اولیه به صفحه وب از طرف سرور برگشت داده میشود.
IdHTTPTest.Post('http://AWebSite.com/login.php', ARequestContent);
در idhttp دو متد بنام getو post وجود داره که برای ارسال اطلاعات به صفحه مورد نظره در حالت get چون احتمال لو رفتن اطلاعات زیاد بود دیگه کاربردی نداره و معمولا از متد post استفاده میشه مقداری که در متد post قرار داره رو میتونین تو سورس صفحه مورد نظر و بخش action که به سرور میگه با اطلاعات چه کاری انجام بده استفاده میکنین
ARequestContent.Add در این بخش اطلاعاتی که باید توسط سرور پردازش بشه یا کاری روش انجام بشه قرار میگیره مثال زیر نمونه یه برنامه هست که خودش عمل login شدن به یه سایت رو برای شما انجام میده شما با تغییر این کدها به مقادیر مورد نظرتون میتونین به هدفتون برسین
موفق باشید
کد:
unit HttpTestFormU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type
  THttpTestForm = class(TForm)
    IdHTTPTest: TIdHTTP;
    edName: TEdit;
    edPass: TEdit;
    btSend: TButton;
    procedure btSendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  HttpTestForm: THttpTestForm;

implementation

{$R *.dfm}

procedure THttpTestForm.btSendClick(Sender: TObject);
var
  ARequestContent : TStringList;
  AResponse: String;
begin
  ARequestContent := TStringList.Create;
  try
    ARequestContent.Add('username=' + edName.Text);
    ARequestContent.Add('password=' + edPass.Text);
    AResponse := IdHTTPTest.Post('http://AWebSite.com/login.php', ARequestContent);
    ....
  finally
    ARequestContent.Free;
  end;
end;

end.