Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

Tflestream   Найти похожие ветки 

 
anton773 ©   (2006-07-08 20:23) [0]

здравствуйте! Почему следующий код всегда выдает 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


 
begin...end ©   (2006-07-08 20:35) [1]

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

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

:о)


 
anton773 ©   (2006-07-08 21:22) [2]


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

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


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


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

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


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


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

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


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


> Германн ©   (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 03:02) [6]


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

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


 
anton773 ©   (2006-07-09 08:15) [7]

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


 
XbI   (2006-07-09 09:48) [8]

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


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

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


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

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


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

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

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


 
anton773 ©   (2006-07-09 10:43) [11]

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



Страницы: 1 вся ветка

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
15-1151892449
vidiv
2006-07-03 06:07
2006.07.30
Как воспитать в себе чувство ответственности и трудолюбия?


2-1151582908
Id
2006-06-29 16:08
2006.07.30
KEY


15-1151468479
Dimmmonn
2006-06-28 08:21
2006.07.30
нужны сэмплы!


6-1142864696
Alex_Delphi
2006-03-20 17:24
2006.07.30
Как програмно загрузить(передать) данные из FTP сервера


3-1148743113
Sword
2006-05-27 19:18
2006.07.30
Fast report и два запроса