PDA

View Full Version : سوال: مقدار داخل یک متن از یک آدرس سایت



me.enik
جمعه 24 شهریور 1391, 16:20 عصر
سلام.

من میخواستم که مثلا متنی رو که داخل آدرس http://007.hecomer.zxn.ir/do هستش را بخوانم.
یعنی مثلا مقداری که داخل اون آدرس هستش رو بریزم داخل یک متغییر که برای این مثال میشه :

hecomer.zxn.ir

حالا من باید چی جوری این کار رو انجام بدم؟

سعید صابری
جمعه 24 شهریور 1391, 17:22 عصر
اگر همیشه این متن ثابت است که از تابع Delete یا rightstr استفاده کنی .
غیر از اینه همه باشه میتونی از تابع pos استفاده کنی برای پیدا کردن کاراکترهای موردنظر جهت حذف و ...

me.enik
جمعه 24 شهریور 1391, 17:33 عصر
نه, قطعا ثابت نیست, چون اگر ثابت بود که دیگه لازم نبود از اونجا بخوانیمش.

اما درباره تابع pos, میشه یه کم بیشتر توضیح بدید؟
اگر میشه یه نمونه کد یا ... هم بزارید ممنون میشوم.

Felony
جمعه 24 شهریور 1391, 18:22 عصر
اگر همیشه این متن ثابت است که از تابع Delete یا rightstr استفاده کنی .
غیر از اینه همه باشه میتونی از تابع pos استفاده کنی برای پیدا کردن کاراکترهای موردنظر جهت حذف و ...
چه ربطی به سوال داشت ؟!

یک کامپوننت idHTTP روی فرم قرار بدید و به صورت زیر محتوای URL رو استخراج کنید :

var
MS: TMemoryStream;
S: TStringStream;
begin
MS:= TMemoryStream.Create;
S:= TStringStream.Create;
try
IdHTTP1.Get('http://007.hecomer.zxn.ir/do', MS);
S.LoadFromStream(MS);
ShowMessage(S.DataString);
finally
MS.Free;
S.Free;
end;
end;

سعید صابری
جمعه 24 شهریور 1391, 23:39 عصر
من حواسم به آدرس سایت نبود رشته در نظر گرفتم!

جمیعا از دوستان عذرخواهی می کنم.

me.enik
شنبه 25 شهریور 1391, 12:37 عصر
گفتم تاپیک جدید نزنم بهتر باشه.

حالا اگر من یوزر نیم و پسورد و ... همه این موارد امنیتی را داشته باشم, چگونه میتوانم اون متن را تغییر بدهم؟
یعنی به جای hecomer.zxn.ir, یک متن دلخواه را بنویسم.

باید چی کار کنم؟

Felony
شنبه 25 شهریور 1391, 13:22 عصر
میتونی از کامپوننت idFTP مربوط به Indy استفاده کنی و فایل مورد نظر رو آپلود کنی یا اینکه از اکتیوکس Chilkat (http://www.example-code.com/delphi/ftp_uploadFromString.asp)استفاده کنی که من همون Indy رو ترجیح میدم .

me.enik
شنبه 25 شهریور 1391, 14:01 عصر
بازم ممنون.

فهمیدم که باید هاست و یوزر و پسورد را ست کنیم, اما بعدش باید چی کار کنیم رو نمیدونم.
اگر میشه یک مثال بزنید.

Felony
شنبه 25 شهریور 1391, 14:38 عصر
من هم امروز تو شرکت برای قسمت آپدیت یکی از برنامه ها مجبور شدم این مورد رو پیاده کنم ، این هم کدش :

var
Str: TStringStream;
FTP: TIdFTP;
begin
Str := TStringStream.Create;
FTP := TIdFTP.Create(nil);
try
Str.WriteString('Sample Text');
with FTP do
begin
Host := '176.111.111.111';
Username := 'Username';
Password := 'Password';
Connect;
if Connected then
begin
ChangeDir('/tmp');
Put(Str, 'Test.txt');
end
else
MessageDlg(Format('Could not connect to %s', [Host]), mtError,
[mbOK], 0);
end;
finally
Str.Free;
FTP.Disconnect;
FTP.Free;
end;
end;

البته این کد نهایی نیست ، یادتون باشه اگر قراره برنامه رو به کاربران برای استفاده بدید IP سرور و Username و Password مربوط به FTP تون رو همینطوری تو برنامه نزارید .

me.enik
شنبه 25 شهریور 1391, 15:22 عصر
اگر درست فهمیده باشم این کد یک فایل تکست جدید میسازه:

Put(Str, 'Test.txt');

حالا بعد از اینکه اینکار انجام شد, با چه دستوری باید مقداری را داخل آن فایل بریزیم؟
این کد هم چی کار میکنه ::> [CODE]Str.WriteString('Sample Text');

Felony
شنبه 25 شهریور 1391, 17:42 عصر
گر درست فهمیده باشم این کد یک فایل تکست جدید میسازه:
[CODE]Put(Str, 'Test.txt');

حالا بعد از اینکه اینکار انجام شد, با چه دستوری باید مقداری را داخل آن فایل بریزیم؟
کاش قبل از پست دادن یک بار کد رو امتحان میکردید ؛ متد Put یک Stream یا فایل رو آپلود میکنه ، اگر وجود نداشته باشه میسازش ، اگر وجود داشته باشه Overwrite ش میکنه ( البته میشه با True کردن پارامتر Append داده های جدید رو به انتهای فایل اضافه کرد ) .


Str.WriteString('Sample Text');
شئ Str از کلاس TStringStream مشتق شده و متن مورد نظر درش درج شده ( 'Sample Text' ) ، این Stream نهایتا توسط متد Put به صورت یک فایل در هاست ذخیره شده .

me.enik
یک شنبه 26 شهریور 1391, 09:29 صبح
بازم ممنون بابت توضیحاتتون.
راستی, پورت رو ست نکرده بودید که ارور داد, از یه پورت پیشفرض استفاده میکرد که اون برای من نبودش, شاید هم برای هیچ کس نبوده ... !

کدی که دادید, کار کرد و درست بودش, ولی فقط یه مشکلی داشت. توی اون فایلی که ساختیم, نمی شد چیزی نوشت, یعنی کلا دستور

Put(str, 'do.txt');
فقط فایل جدید رو میساخت و انگار قسمت str چیزی توش نبود که بخواد توی فایل بنویسه.

اینم دقیقا کدی که من استفاده کردم, تقریبا همون کد شماست :

var
Str: TStringStream;
FTP: TIdFTP;
begin
Str := TStringStream.Create;


FTP := TIdFTP.Create(nil);
try
Str.WriteString('Sample Text');
with FTP do
begin
Port := 21;
Host := 'hecomer.zxn.ir';
Username := 'user';
Password := 'pass';
Connect;
if Connected then
begin
ChangeDir('/');
Put(str, 'do.txt');

end
else
MessageDlg(Format('Could not connect to %s', [Host]), mtError,
[mbOK], 0);
end;
finally
Str.Free;
FTP.Disconnect;
FTP.Free;
end;
end;

me.enik
یک شنبه 26 شهریور 1391, 09:36 صبح
نه نه, ببخشید, درست بودش.
یه اشتباه از من بودش برای چک کردن اون فایل.

ولی وقتی درست چکش کردم, فهمیدم که درست کار کرده, و کاملا درست بوده.

بازم تشکر میکنم.

me.enik
سه شنبه 28 شهریور 1391, 12:32 عصر
کاش قبل از پست دادن یک بار کد رو امتحان میکردید ؛ متد Put یک Stream یا فایل رو آپلود میکنه ، اگر وجود نداشته باشه میسازش ، اگر وجود داشته باشه Overwrite ش میکنه ( البته میشه با True کردن پارامتر Append داده های جدید رو به انتهای فایل اضافه کرد ) .

ببخشید که خصوصیت append, برای کدوم شی هستش؟
برای خود idftp هستش؟

من تست کردم, نفهمیدم برای کدوم شی بودش.

Felony
سه شنبه 28 شهریور 1391, 13:05 عصر
من حرفی از شئ نزدم ، گفتم پارامتر ، همون متد put مربوط به کامپوننت idFTP پارامتری با نام Append داره .

me.enik
سه شنبه 28 شهریور 1391, 14:40 عصر
منظورم از شی همون کامپیوننت بودش.

append یه ورودی integer میگیره, این ورودی برای چی هستش؟

me.enik
چهارشنبه 29 شهریور 1391, 15:10 عصر
اشتباه کردم.
همون put یک پارامتر append داره که باید اون رو یا true قرار بدهیم یا false.
اما وقتی اون رو به true تغییر میدم, دیگه در داخل فایل چیزی نمی نویسه.

باید چی کار کنم؟