Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
15-1146147292
Виталий Панасенко
2006-04-27 18:14
2006.05.28
Сканер штрих-кода Symbol LS 2208 USB


2-1147152625
Неуч
2006-05-09 09:30
2006.05.28
ширина текстового поля в Tmemo


2-1147603543
EZHIK
2006-05-14 14:45
2006.05.28
Команда goto или что-то наподобие...


4-1138482663
Tarantiono
2006-01-29 00:11
2006.05.28
как сделать BitBlt Logon Screen a?


15-1146264001
Atratata
2006-04-29 02:40
2006.05.28
Помогите с анг. языком





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский