لطفا به اين سوال پاسخ دهيد

fmir

New Member
سلام

در qbasic دستوري به اسم data داريم .
آيا در visual basic هم دستور data داريم ؟ اگر داريم نحوه كار با آن را برام بنويسين.
خيلي ممنون مي شم .
 

saalek110

Well-Known Member
کد زیر qbasic است:
از لینک
کد:
SCREEN 7
FOR y = 1 TO 10
FOR x = 1 TO 10
[COLOR="Blue"]READ[/COLOR] z
PSET (x, y), z
NEXT
NEXT
[COLOR="Blue"]DATA[/COLOR] 04, 04, 04, 04, 04, 04, 04, 04, 04, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 00, 00, 00, 00, 00, 00, 00, 00, 04
DATA 04, 04, 04, 04, 04, 04, 04, 04, 04, 04

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

the_king

مدیرکل انجمن
سلام

در qbasic دستوري به اسم data داريم .
آيا در visual basic هم دستور data داريم ؟ اگر داريم نحوه كار با آن را برام بنويسين.
خيلي ممنون مي شم .

Data و Read ای که در QBasic بود، یادگاری از نسل اول بیسیک است که هنوز سیستم متمرکزی برای نگهداری
داده ها وجود نداشت. طبیعتا آن زمان داده ها هم آنقدر زیاد و حجیم نبودند و امکان نگهداری شان در کنار کد برنامه
مشکلی ایجاد نمی کرد.

در ویژوال بیسیک این دو دستور و این شیوه نگهداری داده در کنار کد برنامه حذف گردید. عبارت Read دیگر
کاربردی نداشت و Data هم به منظور دیگری برای اشاره کردن به کلاسی که قابلیت اتصال به بانک اطلاعاتی
را دارد بکار می رود.

شما برای شبیه سازی این دو دستور منسوخ می توانید از دو روتین و تابع زیر استفاده کنید :
کد:
Private Sub [B]QRead[/B](ParamArray d() As Variant)
    Dim Index As Long
    For Index = 0 To UBound(d)
        d(Index) = QData(vbNull)
    Next
End Sub

Private Function [B]QData[/B](ParamArray d() As Variant) As Variant
    Static m() As Variant
    Static Count As Long, Pos As Long
    Dim Index As Long
    If UBound(d) = 0 Then
        If d(0) = vbNull Then
            If Pos < Count Then
                QData = m(Pos)
                Pos = Pos + 1
            End If
            Exit Function
        End If
    End If
    ReDim Preserve m(0 To Count + UBound(d))
    For Index = 0 To UBound(d)
        m(Count + Index) = d(Index)
    Next
    Count = Count + UBound(d) + 1
End Function

یعنی بجای Data از QData و بجای Read از QRead استفاده کنید. تنها محدودیت آن این است که بایستی
دستورات QData اول برنامه (قبل از QRead ها) باشند و نه آخر برنامه.

به عنوان مثال کد زیر نام سه دانش آموز و نمره سه درس آنها را ثبت کرده و سپس معدل آن سه دانش آموز را
محاسبه کرده و اعلام می کند :
کد:
Private Sub Form_Load()
    QData "Ali", 17, 14, 16.5
    QData "Hasan", 17, 15.25, 19.5
    QData "Reza", 14.5, 16.5, 20
    Dim Index As Long, SName As String, Value(1 To 3) As Double
    For Index = 1 To 3
        QRead SName
        QRead Value(1), Value(2), Value(3)
        MsgBox SName & " : " & Round((Value(1) + Value(2) + Value(3)) / 3, 2)
    Next
    End
End Sub

نحوه استفاده خیلی ساده است. هر مقدار عددی، رشته ای و شیء و ... که بعد از دستور QData بنویسید با همان
ترتیب در حافظه قرار می گیرند. برای خواندن آنها هم از QRead استفاده خواهید کرد تا با همان ترتیب (نه برعکس)
بخواند. مثلا QData 12, 16 دو عدد 12 و 16 را در حافظه قرار می دهد و QRead X, Y عدد 12 را در متغیر X و عدد 16
را در متغیر Y می خواند. دقت کنید که QRead ها می توانند همانند QData ها در سطر های متوالی نوشته شوند،
اما اگر داده ای را یکبار خواندید، دیگر مجددا خوانده نخواهد شد. یعنی اگر دستور QRead X, Y را دوبار وارد کنید،
صرفا دفعه اول موفق به خواندن داده ها می شود.
 

جدیدترین ارسال ها

بالا