|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
объединение нескольких файлов с помощью TFileStream
Есть file1 и file2.
Нужно информацию из file1 добавить в начало file2, затем в конце добавить string; Я так понимаю, что PHP код:
Помогите пожалуйста, убил сегодня пол дня на это. |
#2
|
|||
|
|||
Сначала читаем file2 во временный поток (нельзя ДОписать в начало файла). Потом все пишем в нужном порядке в нужный файл.
Код:
var Tmp : TMemoryStream; F1, F2 : TFileStream; S : String; begin F2 := TFileStream.Create('path',fmOpenRead); Tmp := TMemoryStream.Create; Tmp.CopyFrom(F2,F2.Size); Tmp.Seek(0,0); F2.Free; F1 := TFileStream.Create('path',fmOpenRead); F2 :- TFileStream.Create('path',fmOpenWrite); F2.CopyFrom(F1,F1.Size); F2.CopyFrom(Tmp,Tmp.Size); F2.WriteBuffer(S[1],Length(S)); F1.Free; F2.Free; Tmp.Free; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
dnwest (07.02.2012)
|
#3
|
|||
|
|||
Спасибо, то, что доктор прописал.
Единственная проблема, при добавлении string к файлу они становятся кракозяблами. F.WriteBuffer(PChar(string)^, Length(string)); - не помогает |
#4
|
|||
|
|||
Немного прояснилось.
При вставке стринг в файл, после каждого символа (байта) вставляется байт 00. Таким образом строка выглядит не '1234', а '1Ъ2Ъ3Ъ4Ъ'. Какой выход, может что-то с кодировкой? |
#5
|
|||
|
|||
Проблема волшебно решилась заменой типа переменной string на ansistring, разбираться не стал.
Всем спасибо! |
#6
|
|||
|
|||
Теперь кириллица неправильно сохраняется
|
#7
|
|||
|
|||
смотрю, очень форум популярный.
|