PDA

View Full Version : مبتدی: ادغام دو فايل متن و ساخت رديف جديد



amiralex
یک شنبه 26 بهمن 1393, 14:50 عصر
با سلام


يه سوال در مورد فايل تكست دارم . فكر نميكنم تكراري باشه
فرض كنيد ما دو تا فايل تكست داريم به اين شكل:

فايل اول:

000012354567891298000000026568695000000000000000
000023544354354354000000013873373000000000000000
000036435435354354000000038252468000000000000000
000046343893543543000000017741470000000000000000
000056453435454262000000031401341000000000000000
000062354567891298000000026568695000000000000000
000073544354354354000000013873373000000000000000
000086435435354354000000038252468000000000000000
000096343893543543000000017741470000000000000000
000106435435354354000000038252468000000000000000
000116343893543543000000017741470000000000000000


فايل دوم:

000012357867891298000000026568695000000000000000
000024544354354354000000013873373000000000000000
000039632535354354000000038252468000000000000000
000048569714543543000000017741470000000000000000
000050124534354262000000031401341000000000000000
000062354567891298000000026568695000000000000000
000073544354354354000000013873373000000000000000
000086435435354354000000038252468000000000000000
000096343893543543000000017741470000000000000000
000145635435354354000000038252468000000000000000
000116345493543543000000017741470000000000000000

حالا ميخوام اين دو تا فايل و تو يه تكست باكس با زدن يك دكمه نشون بدم (اينو بلدم) ولي با اين شرط كه:
در هر سطر هر دوفايل 5 كاراكتر اول كه رديف فايل هستن حذف بشوند و اين دوفايل زير هم قرار بگيرند در يك تكست باكس و يك رديف جديد به همون شكل به اونها داده بشه

ميشه اين كار رو كرد؟؟؟؟؟؟

vbhamed
یک شنبه 26 بهمن 1393, 22:01 عصر
سلام

با تابع Split و بر اساس کاراکتر vbCrLf میشه سطرها رو از هم جدا کرد و در یک آرایه قرار داد

سپس با تابع Mid می‌تونید از کاراکتر ششم به بعد هر عنصر آرایه رو جدا کنید و قبل از اضافه کردن به TextBox نهایی شماره ردیف جدید رو به اول این رشته اضافه کنید، برای اینکه شماره ردیف جدید دقیقا 5 کاراکتر در بیاد از تابع Format استفاده کنید، با فرض اینکه r شماره ردیف باشه تابع زیر عدد رو 5 رقمی برمی‌گردونه و به تعداد لازم 0 در نظر می‌گیره

Format$(r, "0000#")

amiralex
سه شنبه 28 بهمن 1393, 11:40 صبح
با سلام مجدد و تشكر از مدير بخش بابت پاسخ

كاري كه گفتيد و انجام دادم و به نتيجه ايي كه ميخواستم رسيدم

يه سوال ديگه دارم

اگه تو يه تكست باكس يه سري اعداد زير هم داشته باشيم چطور ميتونم جمع اون اعداد و بدست بيارم؟

يه تكست باكس با متني مشابه اين:

06345335435
03454234435
00000035454
00003545458
00000982454
06874534534

با تشكر

golbafan
چهارشنبه 29 بهمن 1393, 11:13 صبح
سلام
تبدیل متن به عدد کار سختی نیست بعد هم جمعشون بزن...

amiralex
چهارشنبه 29 بهمن 1393, 12:13 عصر
خب من اين كار و بلد نيستم ميشه با يه مثال و كد نشونم بديد؟

منظورتون اينه كل اون فايل تو يه متغير از نوع عددي مثل Double تعريف كنيم بعدش چي؟

كلا يه كد بديد ممنون ميشم

vbhamed
جمعه 01 اسفند 1393, 17:30 عصر
سلام
اگر در تابع Split پارامتر delimiter رو برابر vbCrLf بزارید و پارامتر اول هم متن تکست باکس، خط به خط تکست باکس رو در یک آرایه می‌ریزه و سپس می‌تونید عناصر آرایه رو با هم جمع بزنید

amiralex
یک شنبه 03 اسفند 1393, 07:37 صبح
بسيار ممنونم

خيلي نوشتم كدهاي مختلف رو.
اما نميشه. ميشه يه نمونه ازمايشي برام قرار بديد؟

vbhamed
یک شنبه 03 اسفند 1393, 10:45 صبح
سلام
نمونه ای که نوشتید رو بزارید تا رفع اشکال بشه

amiralex
یک شنبه 03 اسفند 1393, 11:43 صبح
با سلام

Dim T As String

Dim F As String

T = Me.Text67.Text

F = Split(T, vbCrLf)

Dim i2 As Integer

For i2 = 0 To UBound(F)

'اينجا چي بايد بنويسمو نميدونم
' ميخوام با زدن اين دكمه جمع تكست باكس 67 تو يه تكست باكس ديگه نشون داده بشه
Next

vbhamed
یک شنبه 03 اسفند 1393, 16:46 عصر
سلام
F باید آرایه باشه، اگر هم از نوع Currency باشه راحت ترین
Dim F() As Currency
اونجایی که نمی‌دونستید چی بنویسید (F(i2 ها رو جمع بزنید

amiralex
دوشنبه 04 اسفند 1393, 08:34 صبح
سلام ممنون از كمكتون. ولي اين كد اشكال داره.
در تكست باكس 80 كه قراره جمع و نشون بده فقط ميزنه صفر.

در ضمن اون آرايه F رو از نوع Currency كه ميكنم ارور ميده

كدي كه نوشتم اين هست

Dim t As String
Dim F() As Currency



t = Me.Text67.Text

F = Split(t, vbCrLf)



Dim i2 As Integer

For i2 = 1 To UBound(F)


Me.Text80.Text = Val(F(i2))


Next

amiralex
دوشنبه 04 اسفند 1393, 11:26 صبح
با سلام مشكل و خودم حل كردم به اينصورت: البته با راهنمايي و مدير بخش و تشكر از ايشان


Dim t As String

Dim F() As String


Dim L As Currency


t = Me.Text67.Text


F = Split(t, vbCrLf)


Dim i2 As Integer


For i2 = 1 To UBound(F)


L = L + Val(F(i2))


Next


Me.Text80.Text = L

vbhamed
سه شنبه 05 اسفند 1393, 06:34 صبح
سلام
کدتون درسته، فقط اینکه تو پست قبلیتون، وقتی F رو از نوع Currency تعریف کنین دیگه نیازی به تابع Val نیست چون خود آرایه از نوع عددی است

Dim t$, F@(), L@, i2%

F = Split(Text67, vbCrLf)

For i2 = 1 To UBound(F)
L = L + F(i2)
Next

Text80 = L