View Full Version : سوال در مورد TMemoryStream.WriteBuffer
Hadizadeh
دوشنبه 15 اسفند 1384, 12:00 عصر
سلام. من میخام محتویات یک بافر پر شده توسط یک فانکشن رو توی یک MemoryStream بنویسم. برای این کار ، نیاز به سایز بافر مورد نظر داریم. ولی متاسفانه نمی دونم سایز اون رو
چه جوری به دست بیارم. به نظر شما باید چه کار کرد؟
var Buffer:ImageFile; // ImageFile is a predefined type
Mem:TmemoryStream;
begin
[... some code to fill the Buffer...]
mem:=TMemoryStream.Create;
mem.WriteBuffer(Buffer, (size of the buffer));
end;
Naficy
سه شنبه 16 اسفند 1384, 12:26 عصر
sizeof(buffer)
Hadizadeh
سه شنبه 16 اسفند 1384, 16:16 عصر
نه متاسفانه جواب نمیده
vcldeveloper
چهارشنبه 17 اسفند 1384, 08:26 صبح
اگه بافر یه Pointer هست، بصورت زیر:
SizeOf(Buffer^)
Naficy
چهارشنبه 17 اسفند 1384, 22:10 عصر
خوب پس راهش اینه که دقیق بگین این buffer از چه نوعیه.
البته ممکنه همین حالا هم جوابتون را داده باشن. البته فقط در صورتی که نوع buffer یکtyped pointer باشه...
Hadizadeh
چهارشنبه 17 اسفند 1384, 22:29 عصر
متاسفانه نوع اون هم مشخص نیست چراکه سورس اونو ندارم. در یک ActiveX تجاری تعریف شده! به نظر شما حالا باید چه کار کرد؟
vcldeveloper
پنج شنبه 18 اسفند 1384, 06:54 صبح
متاسفانه نوع اون هم مشخص نیست چراکه سورس اونو ندارم. در یک ActiveX تجاری تعریف شده! به نظر شما حالا باید چه کار کرد؟
همون کدی که در بالا گذاشتم را یه بار امتحان کنید
Naficy
پنج شنبه 18 اسفند 1384, 16:59 عصر
متاسفانه نوع اون هم مشخص نیست چراکه سورس اونو ندارم. در یک ActiveX تجاری تعریف شده! به نظر شما حالا باید چه کار کرد؟
این تفاوتی ایجاد نمی کنه. کلید ctrl رو پایین نگه دارید و روی ImageFile کلیک کنید تا تعریف اون رو ببینید.
حتی ممکنه این ImageFile یه کلاس یا اینترفیس باشه که در اون صورت...
Hadizadeh
پنج شنبه 18 اسفند 1384, 23:07 عصر
متاسفانه این کار رو هم کردم ولی همین طور که گفتم، سورسی وجود نداره. یک ActiveX بدون سورس هست. در ضمن شما فرض کنید که تعریف تو یه dcu باشه و سورس pas اون رو هم نداشته باشیم، اونوقت چی؟ با sizeof(buffer^) هم کار نکرد!!!
Naficy
شنبه 20 اسفند 1384, 00:02 صبح
متاسفانه این کار رو هم کردم ولی همین طور که گفتم، سورسی وجود نداره. یک ActiveX بدون سورس هست. در ضمن شما فرض کنید که تعریف تو یه dcu باشه و سورس pas اون رو هم نداشته باشیم، اونوقت چی؟ با sizeof(buffer^) هم کار نکرد!!!
اول تکلیف رو مشخص کنید: ActiveX هست یا یک کامپوننت دلفی؟ اگر ActiveXه مگه importش نکردین؟ (در این صورت حتما یونیتی حاوی تعاریف مربوطه ایجاد شده)
با فرض و ... که کار پیش نمی ره.
در هر صورت، حتی اگه دسترسی به سورس وجود نداشته باشه:
GetTypeDate(TypeInfo(Buffer))
رو بعد از use کردن TypInfo استفاده کنید و از رکورد بازگردانده شده اطلاعات لازم رو دریافت کنید.
اما تا ندونید با چه جور نوع داده ای طرفید (کلاس، رکورد،...) ذخیره کردنش در MemoryStream کار بی معناییه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.