Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 21:36   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Все работает =)
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 22:43   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Ошибки не должно быть, поскольку Length возвратит 0
Length возвратит ноль, а что возвратит @s[1]?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2012, 22:48   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

nil .
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.08.2012, 23:07   #14
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Length возвратит ноль, а что возвратит @s[1]?
Возвратит неверный адрес. Но запись по этому адресу производится не будет.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 09.08.2012, 23:24   #15
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

про запись знаю что не будет.

я боялся исключения о том что обращаемся к несуществующему символу.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2012, 00:46   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Сабж все тот же.. Теперь с числами.
В конце файла пишется целочисленные цифирки, в них торкнуты размеры некой записи 1-й хлебной крошки где-то в теле файла.

Пытаюсь прочитать записанное число.
Код:
        fs.Seek(fs.Size-SizeOf(Integer), soFromEnd);
        fs.Read(iOffsetRecLen,SizeOf(Integer)); //Должно быть 12
        iOffsetRecLen:=iOffsetRecLen; // Тут смотрю,что получилось под дебагом.
Как писать, читать числа?


УПД =)

Решил трабл..
Код:
fs.Seek(fs.Size-SizeOf(Integer), soFromBeginning);

УПД 2

Как читать строки? Я знаю где и сколько она занимает. Как прочитать?

Решил..
Код:
        SetLength(zStr,iOffsetRecLen);
        fs.Read(zStr[1],Length(zStr)*SizeOf(zStr[1]));

Последний раз редактировалось Человек_Борща; 10.08.2012 в 01:16.
Человек_Борща вне форума Ответить с цитированием
Старый 10.08.2012, 00:57   #17
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Возможно, вот эта "моя" темка прояснит некоторые вещи http://www.cyberforum.ru/delphi/thread404848.html

Записывать/читать числа так, как в примере Вы указали, только делать вот так
Код:
fs.Seek(fs.Size-SizeOf(Integer), soFromEnd);
чтобы считать с конца - довольно странно, надо что-то одно юзать, или fs.Size-SizeOf(Integer) или soFromEnd(вместо soFromBeginning), я полагаю, цель была вот такая:
Код:
fs.Seek(SizeOf(Integer), soFromEnd);
Плюс могу посоветовать, чтобы не переписывать в некоторых случаях, sizeof брать от самой переменной, а не её типа, тогда при необходимости смены типа мы застрахованы от недосмотра.

Последний раз редактировалось phomm; 10.08.2012 в 01:00.
phomm вне форума Ответить с цитированием
Старый 10.08.2012, 03:34   #18
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Взял на вооружение советы.

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

Допустим некая "запись" сидит с позиции 504 по позицию 707 в файле размером 5000. Таких записей > 1. Их нужно удалить из файла. Как это сделать?

Последний раз редактировалось Человек_Борща; 10.08.2012 в 03:36.
Человек_Борща вне форума Ответить с цитированием
Старый 10.08.2012, 08:28   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Допустим некая "запись" сидит с позиции 504 по позицию 707 в файле размером 5000. Таких записей > 1. Их нужно удалить из файла. Как это сделать?
а тут вариантов не много - либо отметить эту запись как удалённую (завести в ней признак) + (опционально, по желанию) забить нулями(мусором).
либо СДВИГАТЬ всё, что после данной записи на её место. Крайне неэффективно и затратно, но иногда приходится и неэффективными способами пользоваться. При этом рекомендую работать с копией файла - тогда сбой(любой) во время переноса данных не будет катастрофическим.
Либо, если число удаляемых записей >1 - тогда можно переписывать всё в новый (временный) файл, пропуская удаляемые куски.
После завершения - удалить (или переименовать в <имя>.~bak) исходный файл, временный переименовать в исходное имя. профит.

Последний раз редактировалось Serge_Bliznykov; 10.08.2012 в 08:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2012, 08:54   #20
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Может будет полезно (особенно раздел "Практика").
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реверсное чтение из файла или запись в начало строки без удаления инфы. pompiduskus PHP 2 22.01.2012 22:44
Запись файла YourLastSong Общие вопросы C/C++ 0 09.10.2011 21:20
УДаление строки из файла методом создания временного файла. dykatob Общие вопросы C/C++ 3 28.05.2011 01:46
запись файла dedyshka PHP 5 07.12.2009 17:15
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27