Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26163
Рейтинг: 2127
#16: 2015-05-12 04:11:15 ЛС | профиль | цитата
[flood]
sla8a писал(а):
1nd1g0

Че-то он затаился. Вроде не обижали ничем[/flood]
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#17: 2015-05-12 08:31:11 ЛС | профиль | цитата
[flood]Обиделся и очень. Он модернизировал или вернее можно сказать, создал компонент, а его даже в авторах не упомянули.
После этого он затёр свои посты и перестал здесь появляться. [/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#18: 2015-05-12 09:23:45 ЛС | профиль | цитата
[flood]
Tad писал(а):
Он модернизировал или вернее можно сказать, создал компонент

Если это расширенный счетчик, то в реализации моего компонента его код не использовался вообще, от слова совсем, если только часть идеи. После этого он еще долго был на форуме. Если бы его код был принят без изменения, то он был бы автором, если частично, то соавтором. Вот бы я на такое обижался, или Dilma, или Galkov, мог бы и в личку написать, если претензии имел[/flood]
карма: 22

0
Ответов: 758
Рейтинг: 112
#19: 2015-05-12 09:52:38 ЛС | профиль | цитата
Erik писал(а):
вариант с копированием в новый файл без пустых строк не подходит, изменить нужно именно исходный файл

У нас нет непосредственной операции удаления информации в файле.
Все предыдущие варианты создают новый файл и переписывают исходный.
Могу предложить только вариант переноса пустых строк в конец файла
Add(ODialog,13719326,196,105)
{
link(onExecute,10359595:doOpen,[])
}
Add(FileStream,10359595,252,105)
{
Mode=2
}
Add(DataToFile,4663444,448,231)
{
Type=7
Point(doPosition)
Point(Position)
link(onGet,12544632:doCase,[])
link(Stream,10359595:Stream,[(454,160)(258,160)])
}
Add(Button,8436930,63,105)
{
Left=10
Top=10
link(onClick,10737995:doEvent1,[])
}
Add(Repeat,10955116,259,238)
{
Type=2
link(onRepeat,4663444:doGet,[])
link(Op1,6181386:Wire1,[])
link(Op2,6181386:Wire2,[])
}
Add(Memory,12830656,707,231)
{
Point(Data)
link(Data,13138387:Var3,[(713,145)])
}
Add(Case,12544632,497,231)
{
link(onNextCase,15513379:doEvent1,[])
}
Add(GetDataEx,3366250,266,140)
{
link(Data,10359595:Position,[])
}
Add(Memory,10775528,364,196)
{
Default=Integer(0)
Point(Data)
link(Data,13138387:Var2,[])
}
Add(Hub,15513379,567,231)
{
OutCount=5
link(onEvent1,12830656:doValue,[])
link(onEvent2,13717796:In,[])
link(onEvent3,11948734:doWork,[])
link(onEvent4,11167123:In,[])
link(onEvent5,10463754:In,[])
}
Add(DoData,10343725,364,245)
{
link(onEventData,2809905:doWork2,[])
link(Data,10775528:Value,[])
}
Add(GetDataEx,13138387,364,140)
{
Angle=3
link(Data,3366250:Var3,[])
}
Add(DoData,3852629,392,294)
{
link(onEventData,2809905:doWork3,[(438,300)])
link(Data,12830656:Value,[(398,284)(713,284)])
}
Add(HubEx,2809905,434,245)
{
link(onEvent,4663444:doPosition,[])
}
Add(LineBreak,4984597,308,245)
{
Caption="2"
link(Out,7182642:doWork2,[])
Primary=[13717796,287,-7]
}
Add(LineBreak,7053233,322,196)
{
Caption="3"
link(Out,10775528:doValue,[])
Primary=[11167123,273,56]
}
Add(LineBreak,6976667,350,294)
{
Caption="4"
link(Out,3852629:doData,[])
Primary=[10463754,280,-35]
}
Add(Hub,10922902,161,238)
{
OutCount=4
link(onEvent1,10955116:doRepeat,[])
link(onEvent3,7182642:doWork3,[(347,258)])
link(onEvent4,8809192:doRepeat,[(189,265)(189,300)])
}
Add(HubEx,7182642,343,245)
{
link(onEvent,10343725:doData,[])
}
Add(LineBreakEx,11948734,630,245)
{
Caption="Put"
}
Add(LineBreakEx,15446154,399,217)
{
Caption="Put"
Type=1
link(OnEvent,4663444:doPut,[(441,223)(441,237)])
}
Add(LineBreakEx,13708900,301,294)
{
Caption="Put"
}
Add(Repeat,8809192,203,294)
{
Type=2
link(onRepeat,4184337:doData,[])
link(Op1,3351379:Wire1,[])
link(Op2,3351379:Wire2,[])
}
Add(CableData,1084882,259,182)
{
link(Wire1,10359595:Size,[])
link(Wire2,3366250:Var2,[])
}
Add(CableVar,6181386,259,217)
{
link(Cable,9828037:Var2,[])
}
Add(CableVar,3351379,203,273)
{
link(Cable,9828037:Var1,[(209,205)])
}
Add(GetDataEx,9828037,259,200)
{
link(Data,1084882:Cable,[])
}
Add(DoData,4184337,252,294)
{
Data=String()
link(onEventData,13708900:doWork,[])
}
Add(Hub,10737995,112,105)
{
link(onEvent1,13719326:doExecute,[])
link(onEvent2,10922902:doEvent1,[(144,118)(144,244)])
}
карма: 1

0
Ответов: 4631
Рейтинг: 749
#20: 2015-05-12 11:03:35 ЛС | профиль | цитата
miver, файл грузится в память, данные обрабатываются, затем записываются в начало того же файла, в конце размер файла подгоняется под размер новых данных. Но да, у нас такого нет. В DataToFile или в FileStream нужен метод doSetSize.
карма: 26

0
Ответов: 8930
Рейтинг: 823
#21: 2015-05-12 11:20:23 ЛС | профиль | цитата
Netspirit писал(а):
..файл грузится в память, данные обрабатываются..
..после обработки файл СОХРАНЯЕТСЯ.
Чем такой алгоритм отличается от "Файл грузится в ListBox (StrList), данные обрабатываются, после обработки файл сохраняется
карма: 19

0
Ответов: 4631
Рейтинг: 749
#22: 2015-05-12 11:22:22 ЛС | профиль | цитата
Это к словам miver-а про "перенос строк в конец" при использовании FileStream.
карма: 26

0
Ответов: 1536
Рейтинг: 176
#23: 2015-05-12 13:57:31 ЛС | профиль | цитата
sla8a,[flood] в начале я был удивлён, с чего это вы заговорили с 1nd1g0, но взглянув на его последний визит, всё встало как-бы на место.
визит 1nd1g0
Знать, живой! [/flood]
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 758
Рейтинг: 112
#24: 2015-05-12 14:12:22 ЛС | профиль | цитата
Netspirit писал(а):
файл грузится в память
А Вы уверены что он грузится
Специально залез в Kol и посмотрел функцию, там нет загрузки файла в память
Да и простой експеремент на моей схеме показивает, что после открытия диалога память процесса не меняется.
Открывал Файл в 50 МБ, но программа занимала максимум 8,5 МБ
карма: 1

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#25: 2015-05-12 14:15:43 ЛС | профиль | цитата
miver писал(а):
А Вы уверены что он грузится

Грузится, тк файловые операции используют в системе проекцию файлов в память
карма: 22

0
Ответов: 4631
Рейтинг: 749
#26: 2015-05-12 14:17:17 ЛС | профиль | цитата
miver писал(а):
А Вы уверены что он грузится?
Так я описал, как твой пример мог бы работать без "создания нового файла" и без "пустых строк" в конце файла.

nesco писал(а):
файловые операции используют в системе проекцию файлов в память
Ну, не грузится он целиком. Есть там кеш чтения/записи. Я имел ввиду, что в примере miver можно сделать StreamToStr, затем обработать, как в примерах выше, затем результат записать в тот же файл и подогнать размер.

карма: 26

0
Ответов: 16884
Рейтинг: 1239
#27: 2015-05-12 15:05:32 ЛС | профиль | цитата
nesco писал(а):
Rysik писал(а):
ну щас IC пойдёт
Как только Tad заглянет на огонек, так точно пойдет
Никаких проблем :
1. Открываем временный файл на запись.
2. Открываем исходный файл на чтение.
3. Построчно читаем исходный до конца (While not eof()) и проверяем строку на "" (пусто)
4. Если не пусто, то записываем строку во временный файл.
5. По окончании исходного файла, переименовываем временный в исходный.
Думаю в IC будет около 20-и строк кода.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#28: 2015-05-12 15:37:44 ЛС | профиль | цитата
Netspirit писал(а):
Ну, не грузится он целиком.

А я разве сказал, что он туда грузится целиком?
карма: 22

0
Ответов: 1926
Рейтинг: 172
#29: 2015-05-12 19:26:48 ЛС | профиль | цитата
sla8a писал(а):
Пардонсе, но где у ТС несколько подряд идущих пустых строк? В примере отчетливо показано чередование Так что перестаньте фантазировать и уберите свой камень с моего огорода

sla8a, не хотел вас обижать, но я всегда стараюсь делать схемы более универсальными.
карма: 9
2
Голосовали:Tad, nesco
Ответов: 16884
Рейтинг: 1239
#30: 2015-05-12 20:03:40 ЛС | профиль | цитата
3042, поддерживаю. Где есть одна пустая, там всегда может встретиться подряд и 2, и 10, и 100 пустых.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)