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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2012, 16:19   #1
s500
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 10
По умолчанию Сохранить файл TFileStream

Доброго времени суток!
Помогите, пожалуйста, решить такую задачку:
нужно создать файл, записать в него данные из другого файла и сохранить его.

У меня что-то идёт не так.
Вот вырезка кода:

Код:
var
  DestEncoding: TEncoding;
  LFileStream: TFileStream;
begin
  SaveDialog1.Filter:='Текстовый файлы|*.txt';
  if SaveDialog1.Execute then
  LBuffer := LEncoding.Convert(LEncoding, DestEncoding, LBuffer,LOffset,Length(LBuffer) - LOffset);//данные, полученные из другого файла
  LFileStream := TFileStream.Create(SaveDialog1.Name, fmOpenWrite);//вот тут происходит ли создание файла???????
  LByteOrderMark := DestEncoding.GetPreamble;//данные, которые тоже нужно записать
  LFileStream.WriteBuffer(LByteOrderMark, Length(LByteOrderMark));
  LFileStream.WriteBuffer(LBuffer, Length(LBuffer));
  LFileStream.Free;

Последний раз редактировалось s500; 13.04.2012 в 16:25.
s500 вне форума Ответить с цитированием
Старый 13.04.2012, 19:21   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

fmCreate
fmOpenWrite - перезапишет имеющийся, но огрызок старого может остаться в конце
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 13.04.2012, 19:49   #3
s500
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
fmCreate
fmOpenWrite - перезапишет имеющийся, но огрызок старого может остаться в конце
fmCreate просто создаст файл. а как мне получить доступ к записи?
s500 вне форума Ответить с цитированием
Старый 13.04.2012, 20:58   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

А ты записывать пробывал то? Флаг fmCreate создает файл, если такого нет, перезаписывает заново, если такой был, и открывает его для чтения и записи. Так что после fmCreate смело вызывай WriteBuffer/ReadBuffer.

Флаг fmOpenWrite открывает файл для записи при условии, что тот существовал на момент открытия. Иначе AV.
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 13.04.2012 в 21:02.
3D Hunter вне форума Ответить с цитированием
Старый 13.04.2012, 21:13   #5
s500
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от 3D Hunter Посмотреть сообщение
А ты записывать пробывал то? Флаг fmCreate создает файл, если такого нет, перезаписывает заново, если такой был, и открывает его для чтения и записи. Так что после fmCreate смело вызывай WriteBuffer/ReadBuffer.

Флаг fmOpenWrite открывает файл для записи при условии, что тот существовал на момент открытия. Иначе AV.
сейчас проверил с fmCreate, что-то файл вообще не создаётся...
Понять не могу почему.
s500 вне форума Ответить с цитированием
Старый 13.04.2012, 22:19   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

LFileStream := TFileStream.Create(SaveDialog1.Name,
вероятно он создается , но не там где вы его ожидаете увидеть. а совсем в другом каталоге.
Используйте SaveDialog1.FileName
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.04.2012, 22:26   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну и после if SaveDialog1.Execute then не мешало бы begin и в самом конце end поставить, иначе не видать удачи, если в диалоге отказались от указания файла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.04.2012, 19:51   #8
s500
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 10
По умолчанию

Slym, 3D Hunter, evg_m, Аватар огромное вам спасибо!
s500 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TFileStream. Открыть используемый файл Shouldercannon Общие вопросы Delphi 2 09.03.2012 17:49
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47
TStringList и TFileStream сохранение в файл MalCer Общие вопросы Delphi 2 27.12.2010 14:24
Сохранить в файл MAZADA Помощь студентам 12 02.10.2010 14:39
TFileStream, N структур в один файл? Человек_Борща Общие вопросы Delphi 1 06.06.2010 14:34