نمایش نتایج 1 تا 13 از 13

نام تاپیک: تفاوت file و filesteam چیست؟

  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    تفاوت file و filesteam چیست؟

    سلام
    بعضی قسمتهای برنامه نویسی تابحال استفاده ای برام نداشته. فقط کمی کنجکاوم بدونم آیا FileStream با حافظه موقتکار می کنه؟ LoadFromStream چه کار می کنه؟

  2. #2

    نقل قول: تفاوت file و filesteam چیست؟

    سلام.
    استریم یک آرایه باز از بایت هاست، همین، برای استفاده های مختلف هم شخصی سازی شدن، مثلا مموری استریم، فایل استریم و غیره.
    حسن فایل استریم اینه که شما رو دیگه درگیر این نمی کنه که طول متغیری که دارید می خونید حتما باید اندازه خاصی باشه، درگیری شما رو با هارد کمتر می کنه و با هر بار خوندن هربار مراجعه به هارد ممکنه نکنه و غیره. ممکنه شما در حافظه یک استریم داشته باشید، از هر نوعی، این داده ها رو بعضی اشیا می تونن مستقیم بخونن و ازشون استفاده کنن، مثلا یک فایل بیت مپ از استریم لود کنید، یا هرچی، این استریم صرفا از فایل ممکنه خونده نشده باشه، مثلا در ارتباط با بسته های تی سی پی چیزی که دست شما می رسه ته تهش همین استریمه، به شما یک استریم تحویل می ده چون دیتای رسیده شده اصلا فایل نیست.
    امیدوارم کمی روشن شده باشید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  3. #3
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    سلام علیکم
    ممنونم. کمی روشن شد. اما هنوز نفهمیدم وقتی از FileStram استفاده می کنیم فایل رو از هارد آدرس میدیم یا حافظه یا هر کدوم میتونه باشه.آیا وقتی داریم روی یک فایل متن کار می کنیم میتونیم محتواش رو از یک String بگیریم؟علاوه بر این برنامه پایان فایل و رشته و غیره رو چطور میفهمه. (مثال لازم هستم!)
    من یه برنامه دارم که رو متن کار می کنه. هر لحظه که متن فایل رو تغییر بدیم روی هارد می نویسه. این روش دومزیت داره. یکیش این هست که اگر برق بره یا برنامه با اشکال مواجه بشه اطلاعات از دست نمیره و یکی دیگه این هست که همیشه اونچیزی که داریم می بینیم روی هارد هم هست (مثلا اگر همزمان با برنامه دیگه ای فایل رو ببنیم، محتوا یکسان هست و همینطور اگر کاربر از برنامه بخواد تصویر فایل رو از هارد به روز کنه چیز عجیبی نمی بینه) اما مشکلش استهلاک هارد هست.
    برنامه ها معمولا تا کار رو تموم نکنیم فایل رو ذخیره نمی کنند. اما کنجکاورم بدونم آیا میشه تعدادی فایل متنی در حافظه داشت و بعد هنگام بستن برنامه اونها رو در هارد نوشت.(برنامه من با یک کتاب تشکیل یافته از تعداد زیادی فایل کوچک کار می کنه)

  4. #4

    نقل قول: تفاوت file و filesteam چیست؟

    ببین دیدت رو از فرمت فایل قدیمی کلا عوض کن
    اون قدیما کاراکتر 26 ته فایل متنی رو می بست
    در استریم وقتی رایت می کنید طول مشخص می کنه که تا کجا دیتا وجود داره
    همینطور اگر از روی فایل لود می شه همونجا طول مشخص هست و از روی اون می تونید تعیین کنید تا کجا مجاز به خوندن هستید
    این خوندن هرطوری می تونه باشه، استرینگ، عدد، هرچی
    نگه داری تعدادی فایل متنی روی حافظه هم کار خاصی نداره و به دو روش می تونید اونها رو نگهداری کنید
    یکی استرینگ استریم هست، یکی دیگه هم استرینگ لیست هست.
    بعد از این که کارتون تموم شد اونها رو سیو کنید و فری کنید تا مطمئن بشید رایت انجام شده



    var
    MS: TMemoryStream;
    SS: TStringStream;
    FS: TFileStream;
    SL: TStringList;


    s: AnsiString;
    i: integer;


    begin
    i := $6141;
    s := 'This is a string';


    MS := TMemoryStream.Create;
    MS.Write(s[1], Length(s));
    MS.Write(i, SizeOf(i));


    SS := TStringStream.Create('', TEncoding.ANSI);
    MS.Seek(0, soFromBeginning);
    SS.LoadFromStream(MS);
    ShowMessage( SS.DataString );
    //SS.SaveToFile('AFILE.txt');
    SS.Free;


    MS.Free;


    FS := TFileStream.Create('AFile.txt', fmOpenReadWrite);
    FS.Read(s[1], 10);
    FS.Write(s[1], Length(s));
    FS.Free;


    SL := TStringList.Create;
    SL.Add('Salam');
    SL.Add('123');
    SL.SaveToFile('SomeFile.txt');
    // SL.LoadFromFile();
    // SL.LoadFromStream();
    SL.Free;
    end;



    مثال پر نکته است، یکم روش با دقت وقت بذار و تریس کن.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  5. #5
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    سلام علیکم.
    این سوالم شبیه تقاضای انجام تکلیف هست(البته فقط علاقه شخصیم هست و برای کارم نیست)
    آیا راهی هست که اگر یک کپی از بیت مپ اولیه داشته باشیم، بدون استفاده از scanline ، با توجه به سه بایتی بودن پیکسلهلی یک بیت مپ (pf24Bit) با استفاده از TStringStream و ScanLine[Height-1] (قبلا که بررسی کرده بودم، بیت مپ از سطر آخر به اول در فایل ریخته میشه)فهمید که اگر طول و عرض بیت مپ ثابت مونده باشه، آیا پیکسلهاش تغییر هم کرده؟
    فرض کنید یک بیت مپ رو وقتی با LoadFromFile باز می کنیم، با Assign در یک بیت مپ دیگه میریزیم. اگر وقت بستن برنامه گرافیکی، بخوایم ببینیم که با ثابت موندن طول و عرض، آیا تغییری در بیت مپ ایجاد شده یا نه، میشه به راحتی با خوندن رشته پیکسلها، این کار رو کرد؟ یا مجبورم تک تک پیکسلها رو بایت به بایت یا با مقایسه R,G,B ، بررسی کنم؟
    می دونم سوالم پیچیدگی داره. اگر حوصله داشتید جواب بدید.اگر میخواستم کدش رو با scanLine بنویسم چنین چیزی میشد(بعضی چیزها رو توضیح ندام مثل اینکه ActNo برای آرایه ذخیره حالت تصویر برای لغو عمل به کار میره و ConFirm پنجره پیغام ساخت خودمه):

    function TMainForm.BmpChanged():Boolean;
    Var
    X,Y:Word;
    P,P2:PByteArray;
    begin
    Result:=False;
    If (ImgBmp1.Width<>RestoreBmp.Width) or (ImgBmp1.Height<>RestoreBmp.Height) then
    Begin
    Result:=True;
    Exit;
    End;
    For Y:=0 To ImgBmp1.Height-1 Do
    Begin
    P:=ImgBmp1.ScanLine[Y];
    P2:=RestoreBmp.ScanLine[Y];
    For X:=0 To (ImgBmp1.Width-1)*3+2 Do
    If P[X]<>P2[X] then
    Begin
    Result:=True;
    Exit;
    End;
    End;
    end;
    procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    If ( ((Caption='') and (ActNo>0))
    or ((Caption<>'') and (BmpChanged=True)) )
    and (ConFirm('','ÂíÇ ãÇíá Èå ÐÎíÑå ÊÕæíÑ åÓÊíÏ¿')=MrYes) then
    SaveMainBut.Click;
    end;
    آخرین ویرایش به وسیله mbshareat : جمعه 27 آبان 1401 در 21:11 عصر

  6. #6

    نقل قول: تفاوت file و filesteam چیست؟

    سلام.
    دستور فوق العاده CompareMem رو ببینید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  7. #7
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    ممنون. من در مورد اینکه آیا تمام بیت مپ در یک محل حافظه بایت به بایت پشت سر هم ثبت میشه(البته کدی دیدم که ScanLine رو با محاسبه بایت به دست می اورد) و آیا میتونم از scan Line سطر آخر به عنوان پوینتر استفاده کنم و بعد طول ضرب در عرض ضرب در 3(B,G,R) رو به عنوان Length به این پروسیجر بدم شک دارم. به نظرتون اینطور استفاده درست هست؟

    Var
    P,P2:PByteArray;
    B,B2:TBitMap;
    begin
    B:=Image1.Picture.Bitmap;
    B2:=Image2.Picture.Bitmap;
    B2.Canvas.Pixels[0,0]:=0;
    B.PixelFormat:=pf24Bit;
    B2.PixelFormat:=pf24Bit;
    P:=B.ScanLine[B.Height-1];
    P2:=B2.ScanLine[B.Height-1];
    If CompareMem(P,P2,B.Width*B.Height*3)=False then
    ShowMessage('B and B2 are not equal!');
    end;

    یه سوال دیگه هم دارم. آیا میشه فهمید Pointer به چه عددی اشاره می کنه؟(چیزی مثل PointerToInt میخواستم که مطمئن بشم که scanLine سطر آخر بیشتره یا قبل از آخر!)
    آخرین ویرایش به وسیله mbshareat : شنبه 28 آبان 1401 در 21:57 عصر

  8. #8

    نقل قول: تفاوت file و filesteam چیست؟

    کد به نظر درسته. ولی تست نکردم. به نظرم میاد تمام بیت مپ پشت سر هم در حافظه وجود داره، الان حضور ذهن ندارم.
    X := Integer(Pointer); // thas it
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  9. #9
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    یه سوال دیگه هم به ذهنم رسید. من میخواستم در قسمتی از برنامه رنگ یک پیکسل رو بررسی کنم که اگر فلان رنگ بود با یک رنگ دیگه جایگزین کنم. ظاهرا با Comparemem میتونم بدون درگیر شدن با rgbtBlue. , ... این کار رو بکنم. آیا برای جایگزین کردن رنگ پیکسل با رنگ دیگه هم دستوری (فرقش با پروسیجر چیه؟) هست؟ یا باید یک استریم تعریف کنم؟

  10. #10

    نقل قول: تفاوت file و filesteam چیست؟

    برای جایگزین کردن بایت ها تا جایی که می دونم باید از لوپ استفاده کنید، جاش رو بلد باشید صاف می تونید روی همون رم بنویسید، از استریم هم می تونید استفاده کنید ولی اون استریم خودش فضای جداگانه ای برای خودش خواهد داشت.
    دستور می تونه پروسیجر، تابع، دستور رزرو شده کامپایلر، اسمبلی، یا هرچیز دیگه ای باشه که با فراخوانی اون، کاری انجام می شه
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  11. #11
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    سلام علیکم
    من میتونم از scanLine برای مقداردهی یک متغیر از نوع PByteArray استفاده کنم. یه کد نوشتم که شاید برای خنده خوب باشه.ولی نمی دونم چرا نتیجه ای در تصویر نداره!
    اولش میخواستم به راحتی یک پوینتر رو به پوینتر بایتی انتساب بدم که نشد.در مورد @ و ^ هم چیزی نمی دونم.
    یه بیت مپ کاملا سفید در یک TImage دارم.لطفا بگید تعریف نوع در یک پروسیجر به این شکل فقط در اون پروسیجر کار می کنه؟(در کدهایی که داشتم معمولا این تعریف بیرون پروسیجر و حتی قبل از Implement هست)
    و مهمتر اینگه چرا دو پیکسل از تصویر تغییر رنگ ندادند؟

    Type
    trgbtriplerow=array[0..30000]of trgbtriple;
    prgbtriplerow=^trgbtriplerow;
    Var
    B:TBitmap;
    P:prgbtriplerow;
    P2:PByteArray;
    begin
    B:=Image1.Picture.Bitmap;
    P:=B.ScanLine[2];
    P2:=@P[5];
    P2[0]:=255;
    P[1].rgbtBlue:=255;
    Image1.Refresh;
    end;

  12. #12

    نقل قول: تفاوت file و filesteam چیست؟

    دوست عزیز یکم در مورد اصول دلفی مطالعه کنید، برنامه نویسی بی اصول یقه آدم رو وسط پروژه می گیره.
    بله، داخل فضای پروسیجر اگر یک نوع تعریف می شه فقط در همون فضا معتبر خواهد بود.

    در کدی که نوشتید هیچ جا بیت مپی هنوز آماده نشده. وقتی از چیزی لودش نکردید، و خالی هست، باید طول و عرض و PixelFormat رو مشخص کرده باشید تا Canvas مرتبط بتونه پیکسل رو ارائه بده بهتون.
    نیازی هم به رفرش نبود.

    بقیشو می ذارم به عهده خودتون، یکم باهاش کلجار برید دستتون بیاد.
    موفق باشید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  13. #13
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: تفاوت file و filesteam چیست؟

    Image1 که روی فرم هست یک بیت مپ سفید کوچیک داره
    دو نکته فهمیدم. در واقع کد کار می کرد اما تنظیم اولین بایت از رنگ نقطه روی 255 در بیت مپ سفد نباید تغییری ایجاد کنه. اگر هم صفر می کردم هم چون آبی تنظیم میشد و نتیجه میشد، رنگ زرد بین نقاط سفید، تغییرش خیلی محسوس نبود.
    آخرین ویرایش به وسیله mbshareat : چهارشنبه 09 آذر 1401 در 20:09 عصر

تاپیک های مشابه

  1. حرفه ای: تفاوت filestreem و file در سی شارپ
    نوشته شده توسط rezapour در بخش C#‎‎
    پاسخ: 3
    آخرین پست: یک شنبه 31 فروردین 1393, 23:18 عصر
  2. مبتدی: تفاوت namespace , lib و Header File
    نوشته شده توسط MustafaJF در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: سه شنبه 16 آبان 1391, 14:54 عصر
  3. سوال: دلیل گرفتن خطای could not load file or assembly چیست؟
    نوشته شده توسط mohsen.j1990 در بخش VB.NET
    پاسخ: 1
    آخرین پست: یک شنبه 23 آبان 1389, 09:07 صبح
  4. دلیل بروز اینگونه خطاها از Metadata file چیست؟
    نوشته شده توسط bardia goharbin در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: چهارشنبه 04 بهمن 1385, 23:20 عصر
  5. تفاوت stream,file
    نوشته شده توسط amirhossein1360 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: یک شنبه 09 فروردین 1383, 20:21 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •