Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Чтение части строк из текстового файла Добавлено: 03.11.08 00:47  

Автор вопроса:  CodeHunter | Web-сайт: joiner.vghost.ru | ICQ: 795421 
Здравствуете.
Мне нужно из текстового файла вида:

[code=vbnet]
1:Super
2:Player1
2.1:Федя
2.2:123123123
...
8:ВАЗ2112
[/code]

извлеч в текстбоксы следующие значения:
TextBox1: Super
Textbox3: Player1
Textbox4: Федя
Textbox5: 123123123
...
Textbox8: ВАЗ2112
Читал, читал про работу с текстовыми файлами и ничего не понял...
Пожалуйсто дайте решение или подталкните на умню и !понятную! статью с коментами.

Ответить

  Ответы Всего ответов: 59  

Номер ответа: 1
Автор ответа:
 @lex



Вопросов: 14
Ответов: 262
 Профиль | | #1 Добавлено: 03.11.08 14:44
Кинь на форму 1 текстбокс ("Name = TextBox" и "Index = 0";)
  1. Dim A As New Collection
  2. Dim B As String
  3. Open "C:\1.txt" For Input As #1
  4.     Do Until EOF(1)
  5.     Line Input #1, B
  6.     A.Add B
  7.     Loop
  8. Close #1
  9. For N = 1 To A.Count
  10. C = Split(A.Item(N), ":")
  11. Load TextBox(N)
  12. TextBox(N).Left = 120
  13.     If N <> 1 Then
  14.     TextBox(N).Top = TextBox(N - 1).Top + 340
  15.     Else
  16.     TextBox(N).Top = 120
  17.     End If
  18. TextBox(N).Visible = True
  19. TextBox(N).Text = C(1)
  20. Next N

Ответить

Номер ответа: 2
Автор ответа:
 @lex



Вопросов: 14
Ответов: 262
 Профиль | | #2 Добавлено: 03.11.08 15:04
ну а как пропускать [code=vbnet] и
[/code]
думаю понятно)
Например если первый символ "[" не добавлять стоку в коллекцию
  1. Open "C:\1.txt" For Input As #1
  2.     Do Until EOF(1)
  3.     Line Input #1, b
  4.     If Left(B, 1) <> "[" Then A.Add b
  5.     Loop
  6. Close #1


Ответить

Номер ответа: 3
Автор ответа:
 CodeHunter



ICQ: 795421 

Вопросов: 2
Ответов: 25
 Web-сайт: joiner.vghost.ru
 Профиль | | #3
Добавлено: 03.11.08 23:29
Супер... про разделители не слышал ещё.
Как понял все писалось на VB 6.0, конвертирую в .нет:
[code=vbnet]
        ;Dim A As New Collection
        ;Dim B As String
        ;Dim C As Array
        ;Dim TextBox As Windows.Forms.TextBox

        FileOpen(1, "C:\Program1\DB\Teams\Super.txt", OpenMode.Input, OpenAccess.ReadWrite)
        ;Do Until EOF(1)
            LineInput(1)
            A.Add(B)
        Loop
        Close()
        For N = 1 To A.Count
            C = Split(A.Item(N), ":", 1, CompareMethod.Text)
            CreateObject(TextBox.Text, N)
            '...
        Next

[/code]
дальше не знаю... Что такое Load??? Не нашел такого или подобного оператора...

Ответить

Номер ответа: 4
Автор ответа:
 CodeHunter



ICQ: 795421 

Вопросов: 2
Ответов: 25
 Web-сайт: joiner.vghost.ru
 Профиль | | #4
Добавлено: 03.11.08 23:30
  1.         Dim A As New Collection
  2.         Dim B As String
  3.         Dim C As Array
  4.         Dim TextBox As Windows.Forms.TextBox
  5.  
  6.         FileOpen(1, "C:\Program1\DB\Teams\Super.txt", OpenMode.Input, OpenAccess.ReadWrite)
  7.         Do Until EOF(1)
  8.             LineInput(1)
  9.             A.Add(B)
  10.         Loop
  11.         Close()
  12.         For N = 1 To A.Count
  13.             C = Split(A.Item(N), ":", 1, CompareMethod.Text)
  14.             CreateObject(TextBox.Text, N)
  15.             '...
  16.         Next

Конечно жаль что нет функции редактирования сообщений...

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 03.11.08 23:48
нифига себе изврат!!!
CodeHunter, дружище, немедленно сотри в проекте этот код и никогда так не делай!
(оглядываясь по сторонам) Не дай бог Dark Brand увидит, тогда всё... пиши пропало..

Ответить

Номер ответа: 6
Автор ответа:
 CodeHunter



ICQ: 795421 

Вопросов: 2
Ответов: 25
 Web-сайт: joiner.vghost.ru
 Профиль | | #6
Добавлено: 04.11.08 01:26
EROS, знаю VB.net на уровне копипаста с логикой, поэтому не обижайтесь, если когото оскорбил этим отрезком :) На убогих, как говориться, не обижаются...
Ты бы лучше сказал - как бы мне сделать это по умному? Я понимаю что это не должно составлять труда, но читая учебник - я ничего не понимаю... :(

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 04.11.08 05:41
EROS пишет:
Не дай бог Dark Brand увидит, тогда всё... пиши пропало..

Поздно спохватился - уже увидел :(((

Ответить

Номер ответа: 8
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #8 Добавлено: 04.11.08 09:15
Ты бы лучше сказал - как бы мне сделать это по умному?

  1.  
  2. using System.IO;
  3. using System.Text;
  4.  
  5. namespace ConsoleApplication1
  6. {
  7.     public class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             using (StreamReader sr = new StreamReader(@"c:\test.txt", Encoding.Default))
  12.             {
  13.                 string line = null;
  14.                 do
  15.                 {
  16.                     line = sr.ReadLine();
  17.                     if (!string.IsNullOrEmpty(line))
  18.                     {
  19.                         int position = line.IndexOf(":");
  20.                         if (position != -1 && position != line.Length)
  21.                         {
  22.                             line = line.Substring(position + 1);
  23.                             /* Тут тебе остается лишь присвоить
  24.                              * нужному TextBox'у значение переменной line */
  25.                             // TextBox1.Text = line
  26.                         }
  27.                     }
  28.                 } while (line != null);
  29.             }
  30.         }
  31.     }
  32. }


С переводом на VB проблем возникнуть не должно.

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 04.11.08 09:19
Преимущества, я думаю, очевидны.. никаких коллекций, никаких лишних переменных. Все операции выполняются за один проход.

Ответить

Номер ответа: 10
Автор ответа:
 CodeHunter



ICQ: 795421 

Вопросов: 2
Ответов: 25
 Web-сайт: joiner.vghost.ru
 Профиль | | #10
Добавлено: 04.11.08 10:07
EROS, жесть... Это что, C#??? Ты не видел что я с VB 6.0 сделал? Если я начну "переводить" и этот кусок - менч точно Steel Brand и Dark Brand убьют... Посижука я в сторонке - в уголку...

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 04.11.08 11:34
:-) Да, это С#, но перевод на VB будет практически один в один. Выложи потом что "напереводишь", если что не так будет или не поймешь - поправим..

Ответить

Номер ответа: 12
Автор ответа:
 CodeHunter



ICQ: 795421 

Вопросов: 2
Ответов: 25
 Web-сайт: joiner.vghost.ru
 Профиль | | #12
Добавлено: 04.11.08 13:12
Я итак ниче не пойму... Замялся на using System.IO; ... Где using, что using... непойму..

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 04.11.08 13:42
на VB директива using System.IO; будет выглядить следующим образом:
  1. Imports System.IO

Это импортирование пространства имен.
Народ, у кого VB стоит? Переведите вы пацану чтоб не мучался!

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 04.11.08 18:20
EROS
Да ни за что не поверю что у тебя VB не стоит :) Сказочник!

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 04.11.08 19:40
Зуб даю! :-)))

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам