PDA

View Full Version : مشکل در کار با TStringStream



hamid-nic
شنبه 14 مرداد 1391, 01:30 صبح
سلام
اگر یه رویه (procedure) داشته باشیم همانند زیر که خروجی آن بصورت TStrings باشد به چه شکلی در موقع استفاده می توانیم آن خروجی را به یک TStringStream بصورت TStringStream.WriteString ارجاع بدهیم و در آن بنویسیم ؟

کد رویه :


procedure Reducer (const Path: String; Attr: Integer; List: TStrings) ;
begin
// code
end;


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

var
Textert : TStringStream;

.
.
.

Reducer('rel',1,Textert.WriteString());

اون رویه ی بالا کارش را درست انجام می ده اما خروجی که می فرسته را چطوری توی TStringStream که ایجاد کردم بنویسم ؟

Felony
شنبه 14 مرداد 1391, 10:40 صبح
شیئی که از کلاس TStringStream ساختید رو به صورت ارجاع به مرجع به روال پاس بدید :

procedure Reducer (const Path: String; Attr: Integer; out StrStream: TStringStream) ;
begin
// code
end;

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

hamid-nic
شنبه 14 مرداد 1391, 14:29 عصر
ممنون از پاسختون
اما فعلاً نمی توانم اون روال را تغییر دهم و در موقع استفاده در جاهای مختلف بصورت های زیر جواب می گیرم :

Reducer('rel',1,ListBox1.Items);

OR

Reducer('rel',1,memo1.Lines);

اما حالا برای نوشتن در شی TStringStream مشکل دارم !؟ یعنی به جای memo1.lines اگر بنویسم ()Textert.WriteString جواب نمی گیرم .

Felony
شنبه 14 مرداد 1391, 15:53 عصر
خوب نبایدم جواب بگیری ! اون چه وضع پاس دادن پارامتر هست !

یک شئ از کلاس TStringList بساز و به عنوان پارامتر پاس بده به تابع ، بعد که تابع اطلاعات رو داخلش ریخت تو یک حلقه اطلاعات شئ TStringList ت رو توسط یک حلقه یا ... داخل Stream ت بنویس .