PDA

View Full Version : سوال: مشکل در خواندن فایل متنی



arenaw
دوشنبه 31 مرداد 1390, 14:02 عصر
سلام؛
اول این فایل رو دانلود کنید و با نوت پد بازش کنید، میبینید که 1 خطه!
http://mrking.persiangig.com/1.txt

ولی وقتی با vb اینو لود میکنم تو 3 تا خط لود میکنه! (شما هم امتحان کنید)
اینم کدم:

open "file" for input as #1
do while not eof(1)
line input #1,temp
str = str & temp
if not eof(1) then str = str & vbcrlf
loop
close

setroyd
دوشنبه 31 مرداد 1390, 16:35 عصر
برای اینکه در vb خط ها میشکنه و این شکستگی به دلیل کد new line هست که شما قادر به دیدن اون نیستی

مثل api viwer که چند خطه و شما وقتی کپی میکنی یک خط میشه .

arenaw
دوشنبه 31 مرداد 1390, 21:48 عصر
خب اون به خاطر محدود بودن تکست باکسه برنامه api viewer هستش. ولی تکست باکس من اسکرول داره! (اگه نداشت هم باز تو vb هیچ وقت اینجوری لود نمیکنه

IamOverlord
دوشنبه 31 مرداد 1390, 22:14 عصر
سلام،
بهترین کار اینه که دونه دونه کاراکتر های متن رو بخونی تا ببینی چی توش پیدا می شه که باعث رفتن به خط بعد می شه. ضمنا همه ی Editor ها متون رو از لحاظ رفتن یا نرفتن به خط بعد یه جور نشون نمی دن.

setroyd
سه شنبه 01 شهریور 1390, 00:31 صبح
شما همون کاری رو بکن که دوستمون گفتن بهترین کاره .

vbhamed
سه شنبه 01 شهریور 1390, 02:52 صبح
سلام

كاراكتر شماره 10 و 13 يا همون vbCrLf در وي بي براي خط بعد هستن كه در اصل 13 يعني خط بعد و 10 يعني اول خط
تو وي بي هر كدوم رو بزاريد ميره سطر بعد اما در نوت پد بايد هر دو تاش باشه
تو فايل شما آخر خط اول كاراكتر 10 رو داره و آخر دو خط بعدي كاراكتر 13

arenaw
سه شنبه 01 شهریور 1390, 17:07 عصر
آخه نگاه کنید شما:
مثلا متن من اینه :
Salam
chetori

بعد از کد شدن میشه:
dslfklksdfs

خب این الان تو تکس باکس vb یه خط شده! ولی وختی سیو میشه و دوباره تو همون تکس باکس لود میشه تبدیل میشه به 2 خط!

setroyd
سه شنبه 01 شهریور 1390, 18:55 عصر
حتما مشکل از نوع ذخیره سازی شماست ! شاید در کدها جایی رو بد نوشتید

vbhamed
چهارشنبه 02 شهریور 1390, 11:57 صبح
آخه نگاه کنید شما:
مثلا متن من اینه :
Salam
chetori

بعد از کد شدن میشه:
dslfklksdfs

خب این الان تو تکس باکس vb یه خط شده! ولی وختی سیو میشه و دوباره تو همون تکس باکس لود میشه تبدیل میشه به 2 خط!


سلام

وقتي شما يك رشته رو كد مي‌كنيد كه ديگه نبايد انتظار داشته باشيد به فرمت رشته اوليه نمايش داده بشه
در نهايت اون تيكه از برنامتون رو بزاريد تا اگر مشكلي داره رفع بشه

arenaw
چهارشنبه 02 شهریور 1390, 22:39 عصر
از راهنمایی های شما فهمیدم که مشکل کد کردن کاراکتر chr(13) هستش.
شما وقتی مثلا به کد اسکی حرف 4 ام یکی اضافه میکنی، اگر اون حرف chr(13) باشه خاصیت رفتن به خط بعد رو از دست میده. پس خط اول و دوم میشن یک خط.
ولی ویژوال بیسیک وختی همین جمله ای که یک خط شده رو وختی در فایل ذخیره میکنه و دوباره لود میکنه، chr(14) رو مجددا باهاش مثل enter برخورد میکنه و میره خط بعدی. (line input(
اما نوت پد همچنان تو یه خط نشون میده....
نمیدونم این باگ حساب میشه یا....؟
در هر صورت برای این مشکلم کاری کردم که chr(13) کلا هیچ عملیات بالا پایین رفتن کد اسکی روش انجام نشه و فقط در متن جابه جا شه.

با تشکر از همه دوستان

vbhamed
پنج شنبه 03 شهریور 1390, 22:17 عصر
سلام

كاراكتر 14 چيزي نيست كه باعث رفتن به خط بعد بشه حتما كاراكتر ديگه اي داريد، ممكنه كاراكتر 10 باشه يا شايد هم تو كد كردن رشته بالاخره كاراكتر 13 جايي اضافه ميشه، برنامتون رو بزاريد تا بررسي بشه

arenaw
دوشنبه 07 شهریور 1390, 17:54 عصر
سلام

كاراكتر 14 چيزي نيست كه باعث رفتن به خط بعد بشه حتما كاراكتر ديگه اي داريد، ممكنه كاراكتر 10 باشه يا شايد هم تو كد كردن رشته بالاخره كاراكتر 13 جايي اضافه ميشه، برنامتون رو بزاريد تا بررسي بشه

باز هم اصلاح شد! کاراکتر 10 و 13 وقتی پشت سر هم باشن میره خط بعدی.
اینم کده:


CryptStr = esme tabe'
sstr = matne morede nazar
Khat() = Split(sstr, Chr(13) & Chr(10))
StrLen = len(sstr)
maxkey = bozorg tarin adade dakhele password
akey() = password

For k = LBound(Khat) To UBound(Khat)
For i = 0 To StrLen Step MaxKey
ErrNum = 3
On Error GoTo Err
j = 1
For x = 1 To MaxKey
If i + j < StrLen Then
If Mid(Khat(k), i + j, 1) <> Chr(13) And Mid(Khat(k), i + j, 1) <> Chr(10) Then Mid(Khat(k), i + j, 1) = Chr(Asc(Mid(Khat(k), i + j, 1)) + aKey(j))
End If
j = j + 1
If j = KeyLen Then j = 1
Next x
Next i
Next k
CryptStr = Join(Khat, Chr(13) & Chr(10))

vbhamed
چهارشنبه 09 شهریور 1390, 16:49 عصر
سلام

دوست عزيز
وقتي شما يك رشته رو كد مي‌كنيد ممكنه توش كاراكتر 13 بوجود بياد
مثلا اصلش كاراكتر 12 بوده و شما يكي بهش اضافه مي كنيد ميشه 13
اين كه كاراكتر اصلي 13 يا 10 باشه مهم نيست، مهم اينه كه بعد از كد شدن چند ميشه
ضمنا روش باز كردن فايل شما در ويژوال بيسيك درست نيست چون اين يك فايل باينري حساب ميشه، به صورت زير بازش كنيد، تو اين مثال يك كپي هم ازش گرفته شده

Dim x() As Byte

Open "1.txt" For Binary As #1
Open "2.txt" For Binary As #2

ReDim x(LOF(1) - 1)
Get #1, , x

'Encode x, x(0)=..., x(1)=...

Put #2, , x

Close #1, #2