Вверх ↑
Этот топик читают: Гость
Ответов: 1043
Рейтинг: 33
#1: 2012-05-30 19:19:59 ЛС | профиль | цитата
как правильно соединить два файла, а потом их разъеденить
карма: 0

0
Ответов: 3889
Рейтинг: 362
#2: 2012-05-30 19:54:55 ЛС | профиль | цитата
ashkalov, FileStream,DataToFile,StreamPack,StreamUnPack,Convertor
карма: 1

0
Ответов: 1043
Рейтинг: 33
#3: 2012-05-31 16:58:39 ЛС | профиль | цитата
спасибо
------------ Дoбавленo в 15.57:
что я не правильно делаю?
не робит...

Add(MainForm,2953706,21,105)
{
Width=271
Height=232
}
Add(Button,3420873,210,112)
{
Left=60
Top=25
Width=115
Height=35
Caption="Запись"
link(onClick,13055577:doEvent1,[])
}
Add(Hub,13055577,280,112)
{
link(onEvent1,14688063:doOpen,[(364,118)(364,97)])
link(onEvent2,2376120:doRead,[(322,125)(322,146)])
}
Add(Ini,2376120,329,140)
{
FileName="config.ini"
Section="login"
Key="CIF_key"
link(onResult,9267184:doEvent1,[])
}
Add(FileStream,14688063,504,91)
{
FileName="123.txt"
Mode=1
AutoCopy=0
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,16436871:doData,[])
}
Add(DoData,16436871,553,91)
{
link(onEventData,14688063:doPosition,[(594,97)(594,142)(491,142)(491,118)])
link(Data,14688063:Size,[(559,79)(544,79)(544,134)(517,134)])
}
Add(StreamPack,2506288,448,196)
{
DataCount=#3:CIF|
link(onPack,14688063:doCopyFromStream,[(492,202)(492,111)])
link(CIF,15890435:Value,[])
}
Add(Memory,15890435,448,140)
{
}
Add(Hub,14743015,406,140)
{
link(onEvent1,15890435:doValue,[])
link(onEvent2,2506288:doPack,[(441,153)(441,202)])
}
Add(Button,3492651,210,273)
{
Left=60
Top=105
Width=115
Height=35
Caption="Чтение"
link(onClick,4170919:doOpen,[])
}
Add(FileStream,4170919,441,273)
{
FileName="123.txt"
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,9658566:doUnPack,[])
}
Add(StreamUnPack,9658566,497,273)
{
DataCount=#3:CIF|
link(onUnPack,16305348:doText,[])
}
Add(Edit,16305348,574,273)
{
Left=15
Top=150
Width=215
link(Str,9658566:CIF,[(580,261)(556,261)(556,317)(503,317)])
}
Add(Label,8047883,539,182)
{
Left=20
Top=75
Caption="0000000"
}
Add(Hub,9267184,371,140)
{
link(onEvent1,14743015:doEvent1,[])
link(onEvent2,8047883:doText,[(462,153)(462,188)])
}

------------ Дoбавленo в 16.58:
ау
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#4: 2012-05-31 17:36:09 ЛС | профиль | цитата
Попробуй закрыть файл записи по doClose после записи данных
карма: 22

0
Ответов: 1043
Рейтинг: 33
#5: 2012-05-31 20:32:27 ЛС | профиль | цитата
nesco, пробовал. Тем более там стоит autoCopy= true
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#6: 2012-05-31 22:52:09 ЛС | профиль | цитата
ashkalov писал(а):
пробовал. Тем более там стоит autoCopy= true

А у меня получилось



Add(MainForm,1760091,175,147)
{
Width=271
Height=232
}
Add(Button,3420873,364,154)
{
Left=60
Top=25
Width=115
Height=35
Caption="Запись"
link(onClick,13055577:doEvent1,[])
}
Add(Hub,13055577,434,154)
{
OutCount=3
link(onEvent1,14688063:doOpen,[(518,160)(518,139)])
link(onEvent2,4378606:doData,[(462,167)(462,223)])
link(onEvent3,14688063:doClose,[(553,174)(553,146)])
}
Add(Ini,2376120,483,182)
{
FileName="config.ini"
Section="login"
Key="CIF_key"
}
Add(FileStream,14688063,658,133)
{
FileName="123.txt"
Mode=1
AutoCopy=0
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,16436871:doData,[])
}
Add(DoData,16436871,707,133)
{
link(onEventData,14688063:doPosition,[(748,139)(748,184)(645,184)(645,160)])
link(Data,14688063:Size,[(713,121)(698,121)(698,176)(671,176)])
}
Add(StreamPack,2506288,602,238)
{
DataCount=#3:CIF|
link(onPack,14688063:doCopyFromStream,[(646,244)(646,153)])
link(CIF,15890435:Value,[])
}
Add(Memory,15890435,602,182)
{
}
Add(Hub,14743015,560,182)
{
link(onEvent1,15890435:doValue,[])
link(onEvent2,2506288:doPack,[(595,195)(595,244)])
}
Add(Button,3492651,364,315)
{
Left=60
Top=105
Width=115
Height=35
Caption="Чтение"
link(onClick,4170919:doOpen,[])
}
Add(FileStream,4170919,595,315)
{
FileName="123.txt"
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,9658566:doUnPack,[])
}
Add(StreamUnPack,9658566,651,315)
{
DataCount=#3:CIF|
link(onUnPack,16305348:doText,[])
}
Add(Edit,16305348,728,315)
{
Left=15
Top=150
Width=215
link(Str,9658566:CIF,[(734,303)(710,303)(710,359)(657,359)])
}
Add(Label,8047883,693,224)
{
Left=20
Top=75
Caption="0000000"
}
Add(Hub,9267184,525,182)
{
link(onEvent1,14743015:doEvent1,[])
link(onEvent2,8047883:doText,[(616,195)(616,230)])
}
Add(DoData,4378606,476,217)
{
Data=String(12345678)
link(onEventData,9267184:doEvent1,[(516,223)(516,188)])
}


Но если убрать dpClose, то при первой записис не работает, не читает записанное
------------ Дoбавленo в 22.46:
Чер знает с чем связано это связано, cовсем непонятно. Да и зачем тебе doPosition на записи, поставь Лучше режим ReadWrite, если надо писать в конец файла.
------------ Дoбавленo в 22.52:
К тому же, я совершенно не пойму, как ты собрался читать куски из середины или с конца Используй тгда уж лучше StreamArray, у него можно читать и сохранять в файл сразу, без лишних телодвижений. Для не очень больших файлов -- самое то
карма: 22

0
Ответов: 3889
Рейтинг: 362
#7: 2012-05-31 23:18:10 ЛС | профиль | цитата
nesco писал(а):
если убрать dpClose, то при первой записис не работает, не читает записанное

Странно от тебя слышать. Блокировку он на файл ставит, открыв его на запись, если не снять по doClose, происходит конфликт одновременного доступа, не смотря на то, что всё в пределах одного приложения.
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#8: 2012-05-31 23:44:56 ЛС | профиль | цитата
1nd1g0 писал(а):
Странно от тебя слышать. Блокировку он на файл ставит, открыв его на запись

Все, я понял почему. Если файл открыт по doOpen, то его надо обязательно закрыть по doClose. Код автозакрытия не сработает в этом случае, он срабатывает только когда файл оформляется по doCopyFromStream и ничего больше, до него нельзя открывать файл самому, или можно открывать, но тогда надо закрывать тоже самому
------------ Дoбавленo в 23.44:
Вот это место в коде



procedure THIFileStream._work_doCopyFromStream;
var s:PStream;O:boolean;
begin
O := (not Assigned(Fs))and _prop_AutoCopy;
if O then Open(_Data);
//...
if O then Free_And_Nil(Fs);
end;

O будет true только когда файл до этой функции не создан. И нет тут никакой блокировки данных.
карма: 22

0
Ответов: 1043
Рейтинг: 33
#9: 2012-06-01 01:20:23 ЛС | профиль | цитата
nesco писал(а):
А у меня получилось

у вас получилось, но не то..
если дописывать в файл с уже имеющимися в нем данными, то не читается...

------------ Дoбавленo в 01.20:
StreamArray тоже не подходит, нужно к примеру к мелодии дописать картину, но так чтобы мелодия воспроизводилась, а потом извлечь из нее картинку
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#10: 2012-06-01 02:06:40 ЛС | профиль | цитата
ashkalov писал(а):
если дописывать в файл с уже имеющимися в нем данными, то не читается...

А StreamPack и StreamUnPack не пойдут для этой цели. Они пишут все одним файлом, я же не зря написал
nesco писал(а):
как ты собрался читать куски из середины или с конца

ashkalov, ты когда научишся нормально оформлять постановку задачи Мне, или кому-то, делать больше нечего, как пытаться понять, что тебе надо делать
Ты спросил вопрос, мы ответили, как спросил, так и ответили.
Какие к нам претензии
------------ Дoбавленo в 01.55:
Посмотри, может вот это пригодится -- http://www.hiasm.com/sha/shatools.php?q=5&id=120
------------ Дoбавленo в 02.06:
ashkalov писал(а):
StreamArray тоже не подходит, нужно к примеру к мелодии дописать картину, но так чтобы мелодия воспроизводилась, а потом извлечь из нее картинку

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

Или, все же, нужна не мелодия с картинкой, а что-то другое, о котором ты благополучно умалчиваешь, ведь твой пример не содержал, ни мелодий, ни картинок, а какие-то идентификаторы из файла конфигурации. Че-то ты, батенька, мутишь
карма: 22

1
Голосовали:ashkalov
Ответов: 1043
Рейтинг: 33
#11: 2012-06-01 11:52:01 ЛС | профиль | цитата
nesco писал(а):
ashkalov, ты когда научишся нормально оформлять постановку задачи Мне, или кому-то, делать больше нечего, как пытаться понять, что тебе надо делать

простите
------------ Дoбавленo в 11.52:
nesco писал(а):
Или, все же, нужна не мелодия с картинкой, а что-то другое, о котором ты благополучно умалчиваешь, ведь твой пример не содержал, ни мелодий, ни картинок, а какие-то идентификаторы из файла конфигурации. Че-то ты, батенька, мутишь

да я знаю , и яне мучу.. я просто это в пример привел, а мне нужно записывать файл конфигураций в другой , я этого и не скрывал
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#12: 2012-06-01 12:11:47 ЛС | профиль | цитата
ashkalov писал(а):
а мне нужно записывать файл конфигураций в другой

Так в другой или в этот же Это две разные вещи.
И зачем что-то другое применять для ini файла, кроме его же компонента, или файл конфигурации какой-то самопальный
Ты нормально написать можешь или тебя за фаберже тянуть надо -- вот у меня есть тото и тото, надо получить вот это, а взаимодействовать все должно вот так И исходный файл конфигурации тоже прикладывать надо к схеме, можно с распаковкой во временную папку, чтобы одной схемой было, не самим же его изобретать, не зная, что изобретать
карма: 22

0
Ответов: 1043
Рейтинг: 33
#13: 2012-06-01 15:45:54 ЛС | профиль | цитата
Есть файл 123.ini его нужно записать в файл с картинкой или с музыкой чтоб его видно не было , а потом от туда извлечь во временную папку этот 123.ini в этом файле будет логин к проге
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#14: 2012-06-01 15:55:36 ЛС | профиль | цитата
Вот тебе прообраз такой задачи, сам допиливай, там к exe приклеивается ini через специальный маркер. По нему потом можно найти начало блока файла ini

code_28052.txt
карма: 22

0
файлы: 1code_28052.txt [1020B] [267]
Ответов: 1043
Рейтинг: 33
#15: 2012-06-01 23:10:26 ЛС | профиль | цитата
nesco, Спасибо большое!
------------ Дoбавленo в 23.10:
так и не разобрался я как читать такую запись
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)