PDA

View Full Version : چاپ کارکتر اضافی



syasamboo3
جمعه 24 آذر 1391, 21:32 عصر
سلام به همه دوستان. یه سوال دارم اگه کمکم کنید ممنون میشم.
یه تکست باکس دارم قراره اطلاعاتش روی فرم نمایش داده بشه.این تکست باکس تاریخ رو به این صورت میگیره
مثلا(910924) و همین رو هم پرینت میکنه روی فرم. حالا سوال اصلی
این پرینت کردن باید به صورت زیر باشه:
000000000910924
یعنی یه رشته 15 کارکتری بشه.یعنی صفر قبلش قرار بگیره.
در این حالت مشکلی ندارم ولی اگه قرار بشه تاریخ رقمش کمتر بشه و تعداد صفر هابیشتر باید چه بکنم؟

محسن واژدی
جمعه 24 آذر 1391, 22:42 عصر
سلام علیکم
میتوانید از Format استفاده کنید: Format("910924", "000000000000000")

موفق باشید

syasamboo3
شنبه 25 آذر 1391, 08:30 صبح
ممنون دوست عزیز.این دستو رو چطوری و کجا باید استفاده بکنم

SlowCode
شنبه 25 آذر 1391, 10:20 صبح
سلام
مثلا واسه چاپ کردن اینطوری بنویس:
Printer.Print Format("910924", "000000000000000")
یا واسه نشون دادن توی تکست باکس:
text1.text= Format("910924", "000000000000000")

syasamboo3
شنبه 25 آذر 1391, 10:33 صبح
ممنون دوست عزیز.نمیشه یه نمونه کوچولو بذارید. بخدا عقلم نمیرسه چی میگید

SlowCode
شنبه 25 آذر 1391, 10:42 صبح
یه دکمه بزار روی فرم، روش دابل کلیک کن بعد این کد رو بنویس توش:

MsgBox Format("910924", "000000000000000")

نتیجه کلی باید این باشه:
Private Sub Command1_Click()
MsgBox Format("910924", "000000000000000")
End Sub

اگه باز هم متوجه نشدی بگو تا یه سورس برات بفرستم.

syasamboo3
شنبه 25 آذر 1391, 11:01 صبح
آقا مرسی.عالی بود.دست گلت درد نکنه

syasamboo3
شنبه 25 آذر 1391, 11:10 صبح
آقا چرا فرمت فقط رو یه تکست باکس عمل میکنه؟

SlowCode
شنبه 25 آذر 1391, 11:24 صبح
لطفا منظورت رو واضح تر بگو.
کدی رو که عمل نمیکنه بزار اینجا، حتما اشتباه نوشتی.

syasamboo3
شنبه 25 آذر 1391, 11:27 صبح
Private Sub Command2_Click()
Const forreading = 1, forwriting = 2, forappending = 8
Dim fs, f
Set fs = CreateObject("scripting.filesystemobject")
Set f = fs.opentextfile("c:\tre.txt", forappending)
Text7.Text = Format(Text7.Text, "00000")
Text9.Text = Format(Text9.Text, "000000000000000")
f.write Text7.Text + Text8.Text + Text9.Text + "00000000000000" + vbCrLf
f.Close
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
MsgBox "ÔÎÕ ÈÇ ãæÝÞíÊ ÇÖÇÝå ÔÏ", vbOKOnly, "íÛÇã"

End Sub

این کد یه فایل رو باز میکنه و بر اساس اطلاعات توی 3 تا تکست باک فایل رو پر میکنه. فرمت مربوط به تکست عمل نمیکنه7 .حالا اشتباهش کجاست

SlowCode
شنبه 25 آذر 1391, 11:51 صبح
خب این کد درست کار میکنه! اگه دقت کنی صفرها رو به اولش اضافه میکنه، حالا مشکلت کجاست؟

syasamboo3
شنبه 25 آذر 1391, 11:54 صبح
ولی برای من کار نمیکنه.به تعداد کارکترهایی که مینویسم تو تکست 7 صفر میزاره توی فایل.ولی تکست 9 درست کار میکنه

syasamboo3
شنبه 25 آذر 1391, 12:15 عصر
آقا حل شد. براش تعداد کارکتر تعریف کرده بودم.مرسی از پیگیریاتون.
فقط یه سوال دیگه.
با یه کلید به فایل متنی میسازم. چطوری میتونم متن دوتا تکست باکس رو به عنوان اسم فایل در نظر بگیرم؟

SlowCode
شنبه 25 آذر 1391, 12:43 عصر
خواهش میکنم.
اگه فایل وجود داشته باشه باید از تابع name استفاده کنی، اینطوری:
Name "C:\tre.txt" as "C:\new text.txt"

syasamboo3
شنبه 25 آذر 1391, 15:59 عصر
دوست عزیز ممنون از کمکهاتون.
فایل از قبل وجود نداره.روند کار اینطوره.
3 تا تکست باکس از یه سری عدد 4 رقمی پر میشن. حالا میخوام بازدن یک کلید یه فایل متنی ساخته بشه که اسم اون فایل ترکیبی از اون سه تا تکست باکس باشه

SlowCode
شنبه 25 آذر 1391, 16:11 عصر
خب کاری نداره که! به جای c:\tre.txt مثلا بنویس:
"C:\" & text1 & text3 & text4 & ".txt"

syasamboo3
شنبه 25 آذر 1391, 16:25 عصر
آقا واقعا دست گلت درد نکنه.شرمندمون کردی بخدا.
یه سوال دیگه میپرسم بهمون بدوبیراه نگی ترو خدا
چطوری میتونم اطلاعات فایلی رو که میسازم تو لیست نشون بدم.البته هر داده جدیدی که ثبت میشه هم به لیست و هم به فایل اضاف بشه

SlowCode
شنبه 25 آذر 1391, 17:29 عصر
خواهش میکنم، این حرفا چیه؟
اگه بخوای توی لیست نشون بدی باید فایل رو باز کنی و خط ها رو یکی یکی بخونی و بریزی توی لیست باکس، یعنی اینطوری:
Open "C:\tre.txt" for input as #1
while not(eof(1))
input #1,strtext
list1.additem strtext
wend
close #1

syasamboo3
یک شنبه 26 آذر 1391, 15:54 عصر
آقا عالی و بسیار بسیار ممنون.فقط 2 تا مشکل کوچولو که البته مشکلات از منه.
1- چون فایلی که توسط برنامه ایجاد میشه توش تداد 48 کارکتر از نوع عدد قرار میگیره تو لیست بر مبنای گمونم 16 نمایش میده اعداد رو.چپوری درستش کنم که همه 48 کارکتر نمایش داده بشه
2- میخوام با هر بار فشار دادن کلید و اضافه شدن به فایل اطلاعات تو لیست هم بیان.آلبته از فایل

حالا یه سوال دیگه.چطوری تعداد خطوط ایجاد شده در فایل متنی رو بشمارم و نمایش بدم که مثلا این تعداد سطر ایجاد کردید؟

SlowCode
یک شنبه 26 آذر 1391, 16:37 عصر
1- فکر کنم اشتباه می کنید چون ما کدی واسه تبدیل مبنا ننوشتیم، اگه ممکنه یه تصویر از برنامت بزار و منظورت رو بیشتر توضیح بده.
2- دو روش داری، اولی اینه که تو کد پست 18 بین حلقه wile یه متغیر رو یکی یکی افزایش بدی و بعد از حلقه نشونش بدی. دومی هم اینه که تعداد آیتم های لیست رو نشون بدی، با کد زیر:
msgbox list1.listcount

syasamboo3
یک شنبه 26 آذر 1391, 17:13 عصر
96782
اینم یه عکس از برنامه
اگه نخوایم شمارش از لیست باشه چی؟ از خود فایل باشه

SlowCode
یک شنبه 26 آذر 1391, 17:23 عصر
نه اون مبنای 16 نیست، چون عدد خیلی بزرگه به صورت توان نشون داده، مثلا خط اول میشه 7.707 به توان 47.
بفرما این کدش:

dim ln as integer
Open "C:\tre.txt" for input as #1
while not(eof(1))
input #1,strtext
list1.additem strtext
ln=ln+1
wend
close #1
msgbox ln

syasamboo3
یک شنبه 26 آذر 1391, 18:48 عصر
آقا مرسی.خیلی زحمت دادیم بخدا.چطوری میشه مشکل نمایش رو حل کرد.

SlowCode
یک شنبه 26 آذر 1391, 21:45 عصر
خواهش میکنم شما رو مخ ما جاداری:لبخند:

منظورت اینه که عدد رو به صورت توان دار نشون نده؟ اول بهم بگو اون عدد رو چطوری بدست میاری؟ شاید یه راه راحت تر باشه.

syasamboo3
دوشنبه 27 آذر 1391, 07:35 صبح
شرمنده بخدا میدونم.درک میکنم.
عدد رو از کنار هم قرار دادن نوشته های چند تا تکست باکس بدست میارم

SlowCode
دوشنبه 27 آذر 1391, 11:53 صبح
شرمنده بخدا میدونم.درک میکنم.
لطفا این جور کلمات رو به کار نبر. سوال کردن که عیب نیست همه اولش همینطور هستن.

عدد رو از کنار هم قرار دادن نوشته های چند تا تکست باکس بدست میارم
میدونم کنار هم قرار میدی منظورم اینه که کدش رو بزار اینجا تا امتحان کنم، فکر کنم واسه کنار هم گذاشتن اعداد از + استفاده میکنی، اگه اینطوره & رو امتحان کن ببین جواب میده؟

syasamboo3
دوشنبه 27 آذر 1391, 17:52 عصر
Private Sub Command2_Click()

Const forreading = 1, forwriting = 2, forappending = 8
Dim fs, f
If Text10.Text = "" Then
MsgBox "ÂÏÑÓ ÝÇíá ãÚÊÈÑ äãíÈÇÔÏ.ÂÏÑÓ ãÚÊÈÑí æÇÑÏ äãÇííÏ", vbExclamation, "åÔÏÇÑ"
Else
Set fs = CreateObject("scripting.filesystemobject")
Set f = fs.opentextfile(Text10.Text, forappending)
Text7.Text = Format(Text7.Text, "00000")
Text9.Text = Format(Text9.Text, "000000000000000")
f.write Text7.Text + Text8.Text + Text9.Text + "000000000000000" + vbCrLf
f.Close
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
MsgBox "äÝÑ ÌÏíÏ ÈÇ ãæÝÞíÊ ÇÖÇÝå ÔÏ", vbOKOnly, "íÛÇã"
End If

آقا این کل کد.
بجای + از & هم استفاده کردم ولی جواب نداد.

محسن واژدی
سه شنبه 28 آذر 1391, 07:56 صبح
سلام علیکم
CStr هم بررسی کنید:
CStr(Text7.Text) & CStr(Text8.Text) & CStr(Text9.Text) & "000000000000000" + vbCrLf

موفق باشید

syasamboo3
سه شنبه 28 آذر 1391, 10:53 صبح
آقا.نشد که نشد

محسن واژدی
سه شنبه 28 آذر 1391, 20:07 عصر
سلام علیکم
در صورت امکان بخشی از سورس که در آن به مشکل برخورد کرده اید را ضمیمه یا pm کنید

موفق باشید

syasamboo3
چهارشنبه 29 آذر 1391, 08:13 صبح
دوست عزیز سورس رو گذاشتم تو 2 یا 3 پست قبل.
توضیحشم این که یه فایل تکست میسازه.از یه سری تکست باکس چند تا عدد میگیره.که جمعا 48 کارکتر میشن.
میریزه تو فایل متنی.موقع نمایش تو لیست باکس اعداد رو به صورت توان نشون میده
مشکل هم همینجاست

محسن واژدی
چهارشنبه 29 آذر 1391, 12:39 عصر
سلام علیکم
برای بنده بدون هیچ مشکلی سطرها خیره و بارگذاری میشد
ضمیمه رو بررسی کنید

موفق باشید

syasamboo3
چهارشنبه 29 آذر 1391, 17:56 عصر
آقا این کل فایل.
میخوام فایل که ساخته شد تو لیست نشون داده بشه. هر داده ای هم که اضاف شد به لیست اضاف بشه
file hoghogh.rar - 3 KB (http://uplod.ir/vfvo5n9k31fl/file_hoghogh.rar.htm)

SlowCode
چهارشنبه 29 آذر 1391, 23:53 عصر
علت اینکه اعداد رو به صورت توان دار نشون میداد اینه که متغیر رو تعریف نکرده بودی، پس وی بی اون رو از نوع variant میگیره که عددی هست. پس باید متغیری رو که مقدار سطرها رو توش میریزی از نوع string تعریف کنی. واسه راحتی کار یه تابع مثل زیر بنویس بعد هرجا بهش نیاز داشتی صداش کن.
Sub LoadItems(Path As String)
Dim txt As String
List1.Clear
Open Path For Input As #1
While Not EOF(1)
Input #1, txt
List1.AddItem txt
Wend
End Sub
بعد اینطوری صداش کن:
LoadItems("c:\" + g + ".txt")

syasamboo3
پنج شنبه 30 آذر 1391, 17:59 عصر
آقا مرسی.واقعا زحمت کشیدید.جبران کنم.
این برنامه میاد یه فایل از مشخصات پرسنل یه ارگان میسازه و میده بانک ملی که حقوقاشون رو بریزن به حسابشون.متاسفانه بانک به این بزرگی برنامه ای واسه این کار نداره میگه خودتون تک تک توی فایل تکست بنویسید.حالا در نطر دارم این برنامه رو بچسبونم به یه برنامه دیگه که دریافتی افراد رو مشخص میکنه و در آخر یه فایل بسازه و بزنه تو سر بانک ملی. کامل که شد میذارم توی سایت شاید بدرد بقیه دوستان هم بخوره
بازم از همگی ممنونم

syasamboo3
جمعه 01 دی 1391, 01:37 صبح
آقا یه سوال دیگه.
چطوری میتونم یه عدد مثلا (0000002345600) رو صفر های اولش رو بردارم و نمایش بدم.اینو هم در نظر بکیریم که این کل عدد با صفرها 15 رقمه و صفر های اول عدد تعدادشون متغیره

amin32
جمعه 01 دی 1391, 02:29 صبح
آقا یه سوال دیگه.
چطوری میتونم یه عدد مثلا (0000002345600) رو صفر های اولش رو بردارم و نمایش بدم.اینو هم در نظر بکیریم که این کل عدد با صفرها 15 رقمه و صفر های اول عدد تعدادشون متغیره


Print Val("0000002345600")

syasamboo3
جمعه 01 دی 1391, 21:56 عصر
اقا مرسی.زحمت کشیدی

syasamboo3
شنبه 02 دی 1391, 01:14 صبح
آقا سلام. بازم ما و یه سوال
میخوام محتویات لیست باکس رو با هم جمع کنم.کدش رو بلدم فقط 2 تا مشکل کوچولو دارم.یعنی توقع زیادی دارم ازش
1- میخوام عملیات جمع از سطر دوم به بعد باشه.یعنی اولین عدد جمع نشه
2- از اونجا که عددای توی هر سطر از لیست باکس 48 تا کارکتر هستن من میخوام مثلا از کارکتر 19 تا 34 هر سطر با هم جمع بشن.
حالا چه بکنیم ما به نظر شما

amin32
شنبه 02 دی 1391, 06:18 صبح
آقا سلام. بازم ما و یه سوال
میخوام محتویات لیست باکس رو با هم جمع کنم.کدش رو بلدم فقط 2 تا مشکل کوچولو دارم.یعنی توقع زیادی دارم ازش
1- میخوام عملیات جمع از سطر دوم به بعد باشه.یعنی اولین عدد جمع نشه
2- از اونجا که عددای توی هر سطر از لیست باکس 48 تا کارکتر هستن من میخوام مثلا از کارکتر 19 تا 34 هر سطر با هم جمع بشن.
حالا چه بکنیم ما به نظر شما

فکر میکنم این کد مشکلتون رو حل کنه:


For i = 1 To List1.ListCount
temp = temp & Mid(List1.List(i), 19, (34 - 19))
Next i
Print temp

syasamboo3
شنبه 02 دی 1391, 17:38 عصر
آقا با یه مقدار تغییرات این مشکل هم حل شد
اینم کد با تغییراتش
For i = 1 To List1.ListCount
temp = Val(temp) + Val(Mid(List1.List(i), 19, 15))
Next i
Label13.Caption = temp
البته اصل کد تغییری نکردا.فقط توی خط دوم چون متغیر تعریف نکرده بودیم رشته ها کنار هم قرار میگرفتن که درست شد الان
دست همگی درد نکنه

amin32
شنبه 02 دی 1391, 17:49 عصر
آقا با یه مقدار تغییرات این مشکل هم حل شد
اینم کد با تغییراتش
For i = 1 To List1.ListCount
temp = Val(temp) + Val(Mid(List1.List(i), 19, 15))
Next i
Label13.Caption = temp
البته اصل کد تغییری نکردا.فقط توی خط دوم چون متغیر تعریف نکرده بودیم رشته ها کنار هم قرار میگرفتن که درست شد الان
دست همگی درد نکنه

اوه من فکر کردم میخواید میخواید رشته ها رو با هم جمع کنید:چشمک:

syasamboo3
شنبه 02 دی 1391, 18:01 عصر
باز هم مرسی.خیلی زحمت کشیدید

syasamboo3
شنبه 02 دی 1391, 20:06 عصر
آقا یه سوال دیگه.یه سطر از داده هام رو از فایل ایجاد شده وارد تکست باکس میکنم.حالا چطوری میتونم اونو تغییر بدم بعد دوباره ذخیره کنم سر جای خودش

syasamboo3
یک شنبه 03 دی 1391, 19:22 عصر
دوستان کسی به ما لطفی نمیکنه.نکنه خسته شدید از دست ما

syasamboo3
چهارشنبه 06 دی 1391, 09:51 صبح
آقا جواب سوال آخر ما رو بدبد اگه ممکنه.قول میدم دیگه سوال نپرسم