Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Tflestream [WinXP]


anton773 ©   (2006-07-08 20:23:00) 

здравствуйте! Почему следующий код всегда выдает 0 procedure TForm2.BitBtn1Click(Sender: TObject);
var
FileStream: TFileStream;
I:integer;
begin
if FileExists(Edit2.Text) then
FileStream:= TFileStream.Create(Edit2.Text,fmOpenReadWrite);
FileStream.Seek(soFromBeginning,FS.Size);
I:= FileStream.Position;
I всегда равно 0


anton773   (2006-07-09 10:43:00) [1]

Всем спасибо! Сделал по совету Loginov Dmitry. Все работает.


Loginov Dmitry   (2006-07-09 10:02:00) [2]

Не, лучше так:

var
 fMode: Word;
 ....
begin
 if FileExists(FileName) then fMode := fmOpenXXX else fMode := fmCreate;
 .....


Loginov Dmitry   (2006-07-09 10:00:00) [3]

> А если файла нет то как его(файл) создать а потом создать
> поток?


Например, так:

procedure TForm1.Button1Click(Sender: TObject);
const
 FileName = 'MyFile.txt';
begin
 with TFileStream.Create(FileName, fmCreate) do
   try
     // Здесь идет обработка
     Write('какие-то данные', 15);
   finally
     Free;
   end;
end;


XbI   (2006-07-09 09:48:00) [4]

AssignFile,Rewrite,BlockWrite,CloseFile...и дальше уже как ты там делал...


anton773   (2006-07-09 08:15:00) [5]

Еще вопрос можно? здесь файловый поток создается если файл уже существует. А если файла нет то как его(файл) создать а потом создать поток?


Германн   (2006-07-09 03:02:00) [6]


> Шпиён   (09.07.06 02:55) [5]

Понял свою ошибку.


Шпиён   (2006-07-09 02:55:00) [7]


> Германн ©   (09.07.06 02:39) [4]

TFileStream:

property Size: Int64;

function Seek(Offset: Longint; Origin: Word): Longint; overload; virtual;
function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;


Германн   (2006-07-09 02:39:00) [8]


> А почему бы ему ругаться:procedure Seek(var F; N: Longint);

А вот теперь и я сам задам этот вопрос!


Германн   (2006-07-09 02:35:00) [9]


> Причина была в том,что перепутаны  местами параметры метода
> Seek.(компиллятор почемуто не ругался).

А почему бы ему ругаться:
procedure Seek(var F; N: Longint);


anton773   (2006-07-08 21:22:00) [10]


> 1. Перепутаны местами параметры при вызове метода Seek.
> 2. Вместо FileStream.Size указано FS.Size.
> 3. Вы пренебрегли моим ником.

Вашим ником я не пренебрегал :) Просто обрезал все лишнее(для упрощения) Да вдобавок код не копировал из делфей,а набирал вручную поэтому там опечатки. А вообще ты оказался прав.Причина была в том,что перепутаны  местами параметры метода Seek.(компиллятор почемуто не ругался).Спасибо!


begin...end   (2006-07-08 20:35:00) [11]

В коде видно сразу несколько ошибок.

1. Перепутаны местами параметры при вызове метода Seek.
2. Вместо FileStream.Size указано FS.Size.
3. Вы пренебрегли моим ником.

:о)


Наверх

Титульная страница Поиск, карта сайта Написать письмо