Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];

Вниз

Типизированный файл   Найти похожие ветки 

 
Garmahis   (2003-05-06 13:59) [0]

У меня есть типизированный фаил в котором есть например три записи и мне надо вставить новую запись не в конец файла и например между первой и второй. Как это можно сделать не переписывая всё заново?


 
MBo   (2003-05-06 14:03) [1]

Проще переписать.


 
default   (2003-05-06 14:18) [2]

MBo © (06.05.03 14:03)
согласен


 
Garmahis   (2003-05-06 14:21) [3]

А если записей не три а несколько тысяч и обновления происходят очень часто?


 
default   (2003-05-06 14:30) [4]

опиши поподробней свою задачу что и как надо делать
удалять наверно тоже надо!?


 
Dms   (2003-05-06 14:32) [5]

используй БД


 
Digitman   (2003-05-06 14:38) [6]


> Garmahis



> А если записей не три а несколько тысяч и обновления происходят
> очень часто?


Если так, то это означает следующее :

1. Механизм хранения таких данных в типизир.файле изначально выбран неверно. Если теперь уже нет возможности отказаться от этого механизма (в пользу другого), придется дорабатывать его, реализовав механизм индексации записей.

2. Впору переходить на СУБД. Только имей ввиду, что ни одной СУБД новые записи физически не вставляются (подобно предлагаемой тобой схеме), а всегда добавляются в конец таблицы. При этом механизм индексации записей уже реализован в любой мало-мальски приличной СУБД


 
Garmahis   (2003-05-06 14:46) [7]

Если подробно то есть запись
rec = record
Word:string[10];
Volume:string[50];
end;
Первый символ Word ["а".."я"], ["0".."9"] и надо что бы всё записывались по алфавиту. Использовать базы данных нельзя нужен именно файл.


 
Garmahis   (2003-05-06 14:48) [8]

Удалять ничего не надо только запись и считывание...


 
Digitman   (2003-05-06 14:51) [9]

Индекс ! Только индекс спасет отца русской демократии !)


 
Proton   (2003-05-06 14:53) [10]

у меня есть файл содержащий вот такую строку
1234567890
а мне надо
12345в67890
И хоть лопни, ни че не сделаш не переписывая 67890


 
default   (2003-05-06 14:54) [11]

напиши полностью условие задачи!
так будет проще


 
Garmahis   (2003-05-06 15:05) [12]

Хорошо задача такова: Программа должна составлять словарь слов считанных из Memo. И эти слова она должна хранить в файле в формате: Слово, сколько раз это слово встречалось. При этом в другом файле она должна вести запись что например слова на букву а идут с первой метки по скажем сотую буква б соответственно с сто первои по сто десятую итд... Вобщем мне изначально показалось что типизированный фаил именно то что надо такк как Seek даёт всё что надо... Как я ошибался!:((( И условия задачи изменить нельзя:(


 
Serginio   (2003-05-06 15:16) [13]

Только индексы тебе помогут. Либо создай Файл из цепочек
TCepochki=Record
CurrentRecord:Int64;
NextCepochka:Int64;
End;
А в своей записи вставь
FirstCepochka:Int64;
LastCepochka: Int64;
И обойдешься без индексов. Надеюсь понятно.


 
default   (2003-05-06 15:42) [14]

Serginio (06.05.03 15:16)
поясни что хоть написал и где можно почитать про индексы


 
Garmahis   (2003-05-06 15:50) [15]

К сожалению файлы должны быть имено в том формате что я написал... У меня появилась идея но это конечно извращение... Вобщем всё что я пока смог придумать это при запске проги разбивать файл на 43 файла в каждом по одной букве или цифре а в конце опять собирать в одни... Но это конечно извращение...


 
default   (2003-05-06 16:04) [16]

метки в первом файле должны храниться?


 
Serginio   (2003-05-06 16:08) [17]

Посмотри Есть индексы в памяти типа Б деревьев.
http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019
А в чем проблема с невозможностью изменения формата файла ???


 
Garmahis   (2003-05-06 16:09) [18]

Меток нет при типизированном файле это просто позиция в нетипизированом это строка ну записывал бы и считывал по строчно...


 
Serginio   (2003-05-06 16:09) [19]

Да при небольших колличествах можешь использовать TList или TStringList.


 
default   (2003-05-06 16:09) [20]

Garmahis © (06.05.03 15:50)
тогда уж записывать новые слова(и число их встреч) в RAM
а например при выходе из проги или по кнопке к примеру "Сбросить буфер на диск" всё переписывать на диск


 
Garmahis   (2003-05-06 16:11) [21]

Да откуда я блин знаю?!!! Задачу ставил не я. Мне только известно что на входе и что должно быть на выходе...


 
default   (2003-05-06 16:12) [22]

какой смысл хранить инфу что слова на букву "C" нах-ся к примеру с 100-300 ???


 
default   (2003-05-06 16:21) [23]

to Garmahis
тогда делай как в default © (06.05.03 16:09)
задача по ходу универская - большой размер файла вряд ли предпологается - и поэтому такого решения будет достаточно
в конце концов в серьёзной проге ты бы стал исп-ать базу данных...(СУБД)


 
Garmahis   (2003-05-06 16:25) [24]

Тогда надо вначале туда весь фаил загонять ведь может потребоваться считать слово которое добавилось в этот запуск...


 
default   (2003-05-06 16:34) [25]

ты всё подряд пиши в буфер а в конце проги(или по кнопке) будешь уже смотреть - новое слово или нет и вып-ять нужные дейс-ия...


 
Mikhail   (2003-05-06 16:45) [26]

Индексы! Заведи фаил, в котором будешь хранить предполагаемую
позицию записи. А реально записи добавляй в конец.


 
default   (2003-05-06 16:52) [27]

Mikhail © (06.05.03 16:45)
думаешь для этой задачи это так уж надо?! всё равно ведь весь файл придётся просматривать?!


 
Garmahis   (2003-05-06 16:56) [28]

Тогда надо вначале туда весь фаил загонять ведь может потребоваться считать слово которое добавилось в этот запуск...


 
Mikhail   (2003-05-06 16:57) [29]

Но не переписывать...


 
Serginio   (2003-05-06 16:57) [30]

При индексировании нужное слово находится половинным делением.
Пример Б деревьев показал но и TList или TStringList Вполне подходят.





 
Garmahis   (2003-05-06 17:00) [31]

Блин ещё форум глючит... Сделал! Всем большое спасибо!


 
default   (2003-05-06 18:29) [32]

как сделал?


 
Garmahis   (2003-05-07 00:00) [33]

Да по извращенски:))) Получается что так прога работает быстрее... Конечно сказать чесно если бы делал себе в жизни такого бы не написал, но вобщем мне и не понять зачем такое извращение с файлами нужно...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.007 c
1-59661
asku
2003-05-07 14:19
2003.05.19
плагин на delphi


7-59969
OSV
2003-03-23 14:38
2003.05.19
Нажатие чужого батона программным путем


1-59760
Nikos
2003-05-06 15:11
2003.05.19
Как в место символов отобразить *


14-59943
Ламка
2003-04-30 10:18
2003.05.19
Error install EhLib ?!


1-59767
ЧР
2003-05-06 16:36
2003.05.19
что надо сделать чтобы кнопки меню отображались как у XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский