Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: поиск в файле Добавлено: 21.01.09 11:32  

Автор вопроса:  Artful
Необходимо:
1.проверить файл произвольного доступа, на наличие записей;
2. Организовать поиск записи в файле, притом, что заполненные записи могут идти в перемешку с пустыми, т.е. например запись 2,5 не пустая, а 4 пустая запись.
Заранее спасибо!

Ответить

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

Номер ответа: 1
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #1
Добавлено: 21.01.09 12:13
Ну как как, проверяй размер файла, если больше нуля - записи есть. А назаполненность проверяй запись простой проверкой.

Ответить

Номер ответа: 2
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #2
Добавлено: 21.01.09 12:13
А вообще юзай базы данных

Ответить

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



Вопросов: 4
Ответов: 5
 Профиль | | #3 Добавлено: 21.01.09 13:46
я просто новичок и мне так проще... можно пример как проверять размер файла, и как узнать какое количество записей всего в файле?

Ответить

Номер ответа: 4
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #4
Добавлено: 21.01.09 14:07
Функция FileLen(имя файла) возвращает размер файла в байтах.

Что касается определения количества записей. Смотри. В твоем файле X записей, каждая из которой одинаковой длины. Длину записи можно узнать с помощью оператора Len(). У тебя есть файл длиной N байт, каждая запись в нем по B байт - узнать количество просто: N / B.

Ответить

Номер ответа: 5
Автор ответа:
 Imperial Kashak



ICQ: 479713821 

Вопросов: 10
Ответов: 57
 Профиль | | #5 Добавлено: 21.01.09 14:58
Другой вариант - открыть файл для вывода из него, и те же операции, но оператор такой LOF(#F). Принцип тот же, просто другой подход.

Ответить

Номер ответа: 6
Автор ответа:
 Imperial Kashak



ICQ: 479713821 

Вопросов: 10
Ответов: 57
 Профиль | | #6 Добавлено: 21.01.09 14:59
ЗЫ F - номер файла, т.е. #3, #N, #failik

Ответить

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



Вопросов: 4
Ответов: 5
 Профиль | | #7 Добавлено: 21.01.09 18:49
возникла проблема: есть файл произвольного доступа, в нем записаны кое какие записи, как мне полностью удалить запись под номером 5, например? А то записывая туда "" получается что заменяется только первый символ из этой записи . Есть способ чтобы полностью удалял запись?

Ответить

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



Вопросов: 5
Ответов: 344
 Профиль | | #8 Добавлено: 21.01.09 20:50
Хотите удалить или "обнулить" запись?
Для удаления записи из FileName1 скорее всего придется использовать временный файл (FileName2).
Удали (Kill) FileName2, если он существует (проверка с помощью ф-ии Dir)
Запиши туда только нужные записи, закрой оба файла, удали (Kill FileName1) исходный, скопируй (FileCopy FileName2, FileName1), удали (Kill) FileName2

Для "обнуления" запиши обычным образом в FileName1 запись со всеми нулями.
Если в записи есть поля типа Rec.S=String * N, задай Rec.S=String(N,char(0))

Ответить

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



Вопросов: 5
Ответов: 344
 Профиль | | #9 Добавлено: 21.01.09 22:53
Rec.S=String * N -> Type Rec: S As String * 20: End Type (устал, наверно)
char -> Chr (атавизм Pascal-я)

Да, и временный файл не нужен, если все записи исходного файла считать в mArray()as Rec

Ответить

Страница: 1 |

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



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