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

Вниз

Данные из TFileStream в TString, как реализовать ?   Найти похожие ветки 

 
malenkii_myk   (2005-12-17 23:04) [0]

Подскажите, как из файла, открытого как TFileStream, записать некоторые данные в переменную с типом String...


 
Anatoly Podgoretsky ©   (2005-12-17 23:10) [1]

S[1]


 
jack128 ©   (2005-12-18 00:02) [2]

Anatoly Podgoretsky ©   (17.12.05 23:10) [1]
Крат - сест тал ? ;)

FileSream.Seek(0, 0);
SetLength(s, FileStream.Size);
if s <> "" then
 FileStream.ReadBuffer(s[1], Length(s));


 
Германн ©   (2005-12-18 02:18) [3]


> jack128 ©   (18.12.05 00:02) [2]

Очень интересная конструкция:

> if s <> "" then
>  FileStream.ReadBuffer(s[1], Length(s));

Может лучше try except?

Или на "худой" конец if Length(s) > 0 then а ещё лучше if Length(s) = FileStream.Size then? Так все же нагляднее при чтении исходника другими людьми, имхо.


 
Lamer@fools.ua ©   (2005-12-18 10:50) [4]

>>Германн ©   (18.12.05 02:18) [3]

>Может лучше try except?
Не лучше.

>if Length(s) > 0 then
Я бы выбрал этот вариант, но ещё лучше - см. ниже.

>а ещё лучше if Length(s) = FileStream.Size then?
Это как раз хуже. Незачем вычислять размер FileStream по десять раз на дню.

С точки зрения понятности кода и его оптимизированности for speed я бы написал как-то так:

var
 // ...
 FileStreamSize: Integer;
 // ...
begin
 // ...
 FileStream.Seek(0, soFromBeginning);
 FileStreamSize := FileStream.Size;  // кстати, св-во Size типа Int64; по большому счёту надо бы проверять, чтоб не "зашкаливало" за Integer
 if FileStreamSize > 0 then
 begin
   SetLength(S, FileStreamSize);
   FileStream.ReadBuffer(Pointer(S)^, FileStreamSize);
 end
 else
   S := "";
 // ...
end;


Ну а чисто по ООП"ешному — это вообще воспользоваться TStringStream.


 
Lamer@fools.ua ©   (2005-12-18 10:51) [5]

P.S. А вообще сейчас окажется, что автор имел в виду TStrings, а не String :o)


 
Набережных С. ©   (2005-12-18 12:51) [6]


> Lamer@fools.ua ©   (18.12.05 10:50) [4]


> >if Length(s) > 0 then
> Я бы выбрал этот вариант, но...

Вариант s <> "" более оптимальный, чем этот. Наглядность, имхо, не хуже. Впрочем, локальную переменную для длины я бы тоже скорее всего завел.

> >а ещё лучше if Length(s) = FileStream.Size then?
> Это как раз хуже. Незачем вычислять размер FileStream по
> десять раз на дню.

Это не просто хуже, это вообще бессмысленно. Либо будет равенство, либо исключение на SetLength. И если длина нулевая, то далее range error, если включена проверка.


 
Lamer@fools.ua ©   (2005-12-18 13:43) [7]

>>Набережных С. ©   (18.12.05 12:51) [6]

>Вариант s <> "" более оптимальный, чем этот.
Согласен. Вместо вызова функции компилятор вставляет просто сравнение с nil.

>Наглядность, имхо, не хуже.
Ну это уже зависит от того, у кого какое "имхо" :-)


 
Набережных С. ©   (2005-12-18 14:40) [8]


> Lamer@fools.ua ©   (18.12.05 13:43) [7]


> Ну это уже зависит от того, у кого какое "имхо" :-)

:))) Примерно это я и имел в виду:))


 
Германн ©   (2005-12-19 03:04) [9]

2 Lamer@fools.ua ©
2 Набережных С. ©
Ребята, а вы собственно об чём?
Или я пропустил какую-то серию какого-то сериала?


 
Набережных С. ©   (2005-12-19 08:08) [10]


> Германн ©   (19.12.05 03:04) [9]
> 2 Lamer@fools.ua ©
> 2 Набережных С. ©
> Ребята, а вы собственно об чём?
> Или я пропустил какую-то серию какого-то сериала?

Вполне возможно, и не одну. Только не спрашивайте меня - какого, я телевизор совсем не смотрю. Но Вы, главное, не расстраивайтесь и не волнуйтесь, все это фигня по сравнению с мировой революцией.



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

Форум: "Начинающим";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
14-1134454357
WondeRu
2005-12-13 09:12
2006.01.08
Какого самого прикольного Деда Мороза вы видели?


14-1134370442
wal
2005-12-12 09:54
2006.01.08
Как в России любят слуг народа.


14-1134553613
Piter
2005-12-14 12:46
2006.01.08
3gp кодек


2-1135183024
Mizanthrope
2005-12-21 19:37
2006.01.08
Пересчитать количество секунд в чч:мм:сс


4-1130664226
злобная танька
2005-10-30 12:23
2006.01.08
Открыть с помощью...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский