Открыть на запись свежесозданный файл

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Открыть на запись свежесозданный файл

Сообщение Climber »

Вот код, который вызывается по нажатию кнопки (код шел с zeos):

Код: Выделить всё

procedure TForm1.Button2Click(Sender: TObject);
var
  BlobStream: TStream;
  FileStream: TStream;
  fname: string;
begin
  fname := 'kartinka.bmp';
  if not FileExists(fname) then FileCreate(fname);
  BlobStream := ZQuery1.CreateBlobStream(ZQuery1.FieldByName('b_image'), bmRead);
  try
    FileStream:= TFileStream.Create(fname, fmOpenWrite);  // ошибка тут
    try
      FileStream.CopyFrom(BlobStream, BlobStream.Size);
    finally
      FileStream.Free;
    end;
  finally
    BlobStream.Free;
  end;
end;
Если нажать кнопку когда файла kartinka.bmp нет в папке, то файл создается, а потом выскакивает "Unable to open file". Если программу закрыть, запустить заново и нажать на кнопку при существующем файле, то все работает нормально, файл сохраняется. То есть получается, что после FileCreate файл чем-то занят?
v-t-l
энтузиаст
Сообщения: 745
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Climber писал(а): FileStream:= TFileStream.Create(fname, fmOpenWrite); // ошибка тут

Код: Выделить всё

    FileStream:= TFileStream.Create(fname, fmCreate);
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

О! Работает...
Изображение
Спасибо.
Ответить