Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: как собрать 2 файла в один? Добавлено: 07.04.04 18:20  

Автор вопроса:  Barsik | Web-сайт: barsik.newmail.ru | ICQ: 343368641 

люди добрые, подскажите!!!!

как собрать 2 файла(текстовых) в один, а при нужде опяти разложить на 2???

заранее благодарен!

Ответить

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

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 07.04.04 18:37

Тю! в чём проблема?

Open "C:\111.txt" for input as #1

Open "C:\222.txt" for input as #2

Open "C:\333.txt" for output as #3

do while not eof (1)

Line input #1, q$

print #3,q$

loop

close #1

do while not eof (2)

Line input #2, q$

print #3,q$

loop

close

 

примерно так, писал по памяти, не в VB, а сразу тут. Если что извиняй, неполучится, стучись в аську там и разотрём

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 08.04.04 09:12

Не дюжа клевый способ. Это ж сколько считываний/записей то будет!

Уж лучше сразу считывать файл (если он не особо большой), и второй тоже, а потом за один проход писать. Если большой - в два, три, четыре... захода, но уж никак не построчно.

Примерно так:

Private Sub Command1_Click()

Dim hFile As Byte

Dim sFile1 As String

Dim sFile2 As String

hFile = FreeFile

Open "c:\file1.txt" For Input As hFile

sFile1 = Input(LOF(hFile), hFile)

Close hFile

hFile = FreeFile

Open "c:\file2.txt" For Input As hFile

sFile2 = Input(LOF(hFile), hFile)

Close hFile

hFile = FreeFile

Open "c:\file3.txt" For Output As hFile

Print #hFile, sFile1 & sFile2

Close hFile

End Sub

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 09.04.04 16:35
Ну вообще ты прав, я как-то сразу неподумал что файл может быть большой

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 10.04.04 18:36

Собрать: copy 1.txt+2.txt 3.txt

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 11.04.04 06:31

А как расцеплять? Это в принципе наверно невозможно обычными ср-вами. Разделатель типа ### ставить опасно, тк файлы могут и его содержать...Хотя авторы WinRAR как-то справились...

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 11.04.04 09:55

Для "расцепления": Чем длиннее сочетание символов нем менее вероятно, что в файле появится именно такое сочетание, а вообще лучше в начале выделить, скажем, байт 128 в качестве заголовка и поместить данные туда о началах и концах файлов...

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 12.04.04 10:46
2 sne: Толково придумано :-/ !

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 12.04.04 11:22

Хм... Не слишком удачно, файл то пострадает. То есть, объединяешь два текстовых файла - в итоге должен получиться текстовый файл, а там - какая-то лабуда в начале.

Толковее будет добавить в конец, отделив, скажем, нулевым символом. Тот же TextBox не выводит целиком Null-terminated string, то есть при загрузке такого файла в TextBox он будет выглядеть нормально, без служебной дряни.

ИМХО, 128 байт будет многовато там, где хватит и 4-х.

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #9
Добавлено: 12.04.04 16:29
Слухай, а можно по подробней об ентой вашей Null-terminated string, я ранее не знал ничего подобного! оч интерестно!

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 12.04.04 16:52

Видать, с дельфей не особо работал, я там натыкался часто. Ну, почитай MSDN или Help-файлы.

.

Null-terminated Strings

Always cast zero to TCHAR when using null-terminated strings. The code 0x0000 is the Unicode string terminator for null-terminated strings. A single null byte is not sufficient for this code, because many Unicode characters contain null bytes as either the high or the low byte. An example is the letter A, for which the character code is 0x0041.

.

К примеру:

Private Sub Form_Load()

Dim tmpString As String

tmpString = "Null-terminated " & Chr$(0) & "more string's characters"

Text1.Text = tmpString & " bla-bla-bla"

End Sub

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #11 Добавлено: 12.04.04 16:59

Так, к сведению - они используются в протоколах чатов, в частности, qChat и Vypress Chat, разделяя в UDP пакетах поля данных.

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 12.04.04 18:33

Угу... вот только указанный способ работает только для текстовых файлов... ни больше ни меньше... Ну а если этот код использовать, то заместо chr$(0) лучше бы вставить vbNullChar... Зря чтоль константа предусмотрена, не дадим пропасть добру :))

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 13.04.04 10:10

Ну дык в вопросе так и сказано - "как собрать 2 файла(текстовых) в один".

Естественно, если файл бинарный - нет смысла считывать его построчно :) Тут уж рулит массив.

Ну а константы - дело привычки. Я еще со спектрума привык работать непосредственно с кодами.

Ответить

Страница: 1 |

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



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