السلام عليكم
اخي الشاكي لله طيب عايز افهم علي اي اساس قام الاخ الفاضل بروف سيموس بعرض رقم واحد فقط بعد الفاصلة
طيب ولو الحساب بالميجا او الجيجا كم رقم يتم عرضه بعد الفاصلة
لا ادري لماذا الامر صعب لهذه الدرجة
طالما ان الويندوز قام بهذه العمليةاكيد في دوال api تقوم بذلك
الله المستعان
(30-12-13, 02:54 AM)ali.alfoly كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
جزاكم الله خيرا اخواني جميعا واسئل الله تعالي ان يجزيكم عني خيرا
يبدو ان محدش خد بالو من الكود
اخواني ارجو مراجعة هذا الكود
الكود يوجد به مشكلتان الاولي
عند وضع مسار ملف حجمه 7.34 mb
يعود بـ 7.34833717346191 MB
المشكلة الثانية تقسيم النص مثل ما وضخ الاخ الشاكي لله .ToString("#,#")
بالنسبة للكود الخاص بك ممكن يصبح هكذا بعد وضع عملية تقسيم النص ، بحيث أن لا يعود النتيجة بهذا الشكل 7.34833717346191 MB :
PHP كود :
If Length < 1024 Then
Txt_Siz = Length.ToString("#,#") & " Bytes"
ElseIf Length < 1048576 Then
Txt_Siz = (Length / 1024).ToString("#,#") & " KB"
ElseIf Length < 1073741824 Then
Txt_Siz = (Length / 1024 / 1024).ToString("#,#") & " MB"
ElseIf Length >= 1073741824 Then
Txt_Siz = (Length / 1024 / 1024 / 1024) & " GB"
End If
طبقت هذا لكودك بعد أن توصلت إلى نتيجة أخرى بوضع الفاصلة من خلال ما طرحه أخي الشاكي لله في هذا النموذج :
حيث أن الكود أصبح كالتالي :
PHP كود :
Dim MB As Long = Math.Round(FilesInfo.Length / 1048576, 1)
Dim KB As Long = (Math.Round(FilesInfo.Length / 1024, 1))
Dim Byt As Long = (Math.Round(FilesInfo.Length, 1))
Label2.Text = String.Format("Size : " & MB.ToString("#,#") & " MB " & KB.ToString("#,#") & " KB " & Byt.ToString("#,#") & " Bytes ")
لا اعلم ان كان هذا ما تريده ، ولكن مجرد محاولة لفصل الارقام بالفاصلة .
لك خالص تحياتي .
جزاك الله خيرا اخي الشاكي لله
معلش تعبتك معي انتا والاخوة الافاضل
ما زالت المشكلة قائمة
اريد ان اعرف علي اي اساس يقوم بعرض رقم او رقمين بعد الفاصلة لان في الويندوز يقوم احيانا بالعرض واحيانا لايقوم مع ان الاحجام تكون تقريبا متقاربة
انتظر
لماذا في الحالة الاولي عرض اول رقم بعد الفاصلة وفي الحالة الثانية لم يعرضه
السلام عليكم
الحمد لله تعالي وصلت للحل وهو سهل جدا سبحان الله
القاعدة التي يتم علي اساسها عرض القيمة هي ان الرقم يجب ان يتكون من ثلاث ارقام فقط مثال
12.2
1.22
122
هههههه طبعا مش مسدق نفسي قاعدة غريبة جدا
انظر الدالة الاخيرة
كود :
Private Function GetFileSize(ByVal FilePath As String) As String
Try
Dim Length As Long = New IO.FileInfo(FilePath).Length
Dim Le_Byt As String = "(" & Length.ToString("#,#") & " Bytes)"
'
If Length < 1024 Then
Return Le_Byt
ElseIf Length < 1048576 Then
Return Set3Byt(Length / 1024) & " KB " & Le_Byt
ElseIf Length < 1073741824 Then
Return Set3Byt(Length / 1048576) & " MB " & Le_Byt
ElseIf Length >= 1073741824 Then
Return Set3Byt(Length / 1073741824) & " GB " & Le_Byt
End If
Catch ex As Exception
End Try
Return ""
End Function
Private Function Set3Byt(nmpt As String) As String
Dim txt As String = ""
Dim str As Byte = 0
For Each Cr As Char In nmpt
txt += Cr
If Cr <> "." Then str += 1
If str = 3 Then Exit For
Next
Return txt
End Function
الشكر موصول للاخوة الافاضل
الاخ الحبيب الي قلبي جدا محمد . الشاكي لله (السيرقر الذكي ) .... (جاري البحث ... طبعا انتا فقط الي فاهم اللغة دي هههه جزاك الله خيرا
الاخ الكريم معاذ . kslawy شكرا لاهتمامك ومساعدتك جزاك الله خيرا
الاخ الفاضل محمد . البروف سيمونس جزاك الله خيرا علي محاولاتك المتكررة وافكارك الجميلة جزاك الله خيرا
الاخ ناجي إبراهيم جزاك الله خيرا علي المعلومات القيمة
(01-01-14, 03:53 AM)ali.alfoly كتب : [ -> ]السلام عليكم
الحمد لله تعالي وصلت للحل وهو سهل جدا سبحان الله
القاعدة التي يتم علي اساسها عرض القيمة هي ان الرقم يجب ان يتكون من ثلاث ارقام فقط مثال
12.2
1.22
122
هههههه طبعا مش مسدق نفسي قاعدة غريبة جدا
انظر الدالة الاخيرة
كود :
Private Function GetFileSize(ByVal FilePath As String) As String
Try
Dim Length As Long = New IO.FileInfo(FilePath).Length
Dim Le_Byt As String = "(" & Length.ToString("#,#") & " Bytes)"
'
If Length < 1024 Then
Return Le_Byt
ElseIf Length < 1048576 Then
Return Set3Byt(Length / 1024) & " KB " & Le_Byt
ElseIf Length < 1073741824 Then
Return Set3Byt(Length / 1048576) & " MB " & Le_Byt
ElseIf Length >= 1073741824 Then
Return Set3Byt(Length / 1073741824) & " GB " & Le_Byt
End If
Catch ex As Exception
End Try
Return ""
End Function
Private Function Set3Byt(nmpt As String) As String
Dim txt As String = ""
Dim str As Byte = 0
For Each Cr As Char In nmpt
txt += Cr
If Cr <> "." Then str += 1
If str = 3 Then Exit For
Next
Return txt
End Function
تبارك الرحمن ما شاء الله ، يسعدني هذا الخبر أن هنالك نتائج جديدة بوصولك للهدف الذي تريده .. وحقاً انت جعلتنا نخوض في بحر هذا الشيء لكي نتعلم سر ظهورها بهذا الشكل والحمدلله وانت وصلت إلى ذلك ..

ويستحق الكل الشكر وأنت اولهم على وصولك لهذا المنجز الذي سيفيدنا جميعاً ببرامجنا ..
فلك وللجميع خالص التحايا ..
محمد .