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

Вниз

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

 
Firefly ©   (2006-05-09 22:10) [0]

Здравствуйте. С праздником всех!
У меня такой вопрос. Почему данный код не работает - вылетает с ошибкой
Invalid property value при попытке открыть файл? Если же использую ReadStr, то файл открывается, но функция возвращает лишь маленький кусок строки.

procedure TFMain.bbOpenProfileClick(Sender: TObject);
var
 Profile:string;
 ProfileStream:TFileStream;
 R:TReader;
begin
if OpDlgProfileEdit.Execute then
 Profile:=OpDlgProfileEdit.FileName;
 ProfileStream:=TFileStream.Create(Profile,fmOpenReadWrite);
 ProfileStream.Position:=0;
 R:=TReader.Create(ProfileStream,10000000);
 mmProfileEdit.Lines[0]:=R.ReadString;end;


 
Пусик ©   (2006-05-09 22:12) [1]

mmProfileEdit.Lines[0]:=R.ReadString;

А у тебя строка с индексом [0] уже существует в этот момент?


 
Firefly ©   (2006-05-09 22:13) [2]

Нет, не существует.
Да и не в этом дело - ReadStr работает же(хоть и коряво).


 
TUser ©   (2006-05-09 22:22) [3]

ТОгда mmProfileEdit.Lines.Add();


 
Firefly ©   (2006-05-09 22:30) [4]


> 3] TUser ©

Та же ерунда


 
KilkennyCat ©   (2006-05-09 22:33) [5]


> А у тебя строка с индексом [0] уже существует в этот момент?


а разве нулевая может не существовать?


 
Firefly ©   (2006-05-09 22:46) [6]

Наверное, имелось ввиду что [0] не заполнена.
Хотя, даже если и заполнена, я ж ей значение присваиваю, должно быть по барабану.


 
Пусик ©   (2006-05-09 23:24) [7]


> KilkennyCat ©   (09.05.06 22:33) [5]
>
>
> > А у тебя строка с индексом [0] уже существует в этот момент?
>
>
>
> а разве нулевая может не существовать?

Да. Может.

Но вот реализация таких наследников от TStrings, как TMemo и TListBox, как мне кажется, неправильно сделана.

property Strings[Index: Integer]: string read Get write Put; default;

procedure TStrings.Put(Index: Integer; const S: string);
var
 TempObject: TObject;
begin
 TempObject := GetObject(Index);
 Delete(Index);
 InsertObject(Index, S, TempObject);
end;


Т.е. даже если не существует ни одной строки, вполне можно прочитать нулевую строку. Более того, будет работать и такой код:

Memo1.Lines.Clear;
Memo1.Lines[0] := "0";
Memo1.Lines[1] := "1";
Memo1.Lines[2] := "2";

и т.д.

А также можно прочитать без ущерба для себя из несуществующей строки:

Memo1.Lines.Clear;
s := Memo1.Lines[0];

А вот с TStringList этот фокус не пройдет. В этом классе миетоды доступа к строкам реализованы правильно.


 
jack128 ©   (2006-05-10 00:34) [8]

Пусик ©   (09.05.06 23:24) [7]
Т.е. даже если не существует ни одной строки, вполне можно прочитать нулевую строку.

вообще то - это проблемы реализации виндового класса EDIT, а никак не дельфи.

Firefly ©   (09.05.06 22:10)
потому что у тебя файл битый.  Покажи как пишешь файл..


 
Firefly ©   (2006-05-10 01:23) [9]


> [8] jack128 ©

Файл я пишу просто - открываю блокнот и Ctrl-C Ctrl-V.
Да и пробовал на разных файлах - везде та же ерунда


 
jack128 ©   (2006-05-10 04:17) [10]

Firefly ©   (10.05.06 1:23) [9]
Файл я пишу просто - открываю блокнот и Ctrl-C Ctrl-V.

откуда Ctrl+C ?? И вообще какой блокнот, TReader вообще то с бинарным файлом работает.


 
Firefly ©   (2006-05-10 07:06) [11]


> [10] jack128 ©

Копирую в виндовый блокнот из лог-файлов JBoss.
Но раз ты так упорен насчет битого файла, я поэкспериментирую с файлами(и кодировками), мож чего получится.


 
Firefly ©   (2006-05-10 10:10) [12]


> И вообще какой блокнот, TReader вообще то с бинарным файлом
> работает.

Только сейчас дошло:-)))
А какие методы есть для работы с текстовыми файлами?


 
Anatoly Podgoretsky ©   (2006-05-10 11:57) [13]

Методов нет, только процедуры, основные ReadLn и WriteLn



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

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

Наверх




Память: 0.49 MB
Время: 0.055 c
2-1147327268
VitalZ
2006-05-11 10:01
2006.05.28
Невидимая папка


2-1147461468
Viconia
2006-05-12 23:17
2006.05.28
Посмотрите, плиз, запрос...


10-1120133263
pronchik
2005-06-30 16:07
2006.05.28
ссылка в WebBrowser


1-1144819532
vidiv
2006-04-12 09:25
2006.05.28
Чтение и запись строки в Stream


9-1130090424
Galiaf
2005-10-23 22:00
2006.05.28
Принцип игры Герои 3.