Форум: "Основная";
Текущий архив: 2014.02.09;
Скачать: [xml.tar.bz2];
ВнизTIniStream реальность? Найти похожие ветки
← →
brother © (2011-11-18 10:01) [0]Работаю с файлами: структура INI, необходимо чтение данных, файл нужно держать в памяти (TMemoryStream)
Есть ли подобный компонент TIniStream? или придется реализовывать самому?
← →
DVM © (2011-11-18 10:05) [1]
> структура INI
> файл нужно держать в памяти
TMemoryIniFile ???
← →
brother © (2011-11-18 10:09) [2]TMemIniFile нашел, но не до конца понял, он грузит из файла, а мне нужно из TMemoryStream он это умеет?
← →
brother © (2011-11-18 10:12) [3]идея: держать структуру TIniFile в памяти и читать нужные секции и значения по необходимости...
← →
Медвежонок Пятачок © (2011-11-18 10:13) [4]А типа сейчас ты работая с ТИнифайлом работаешь не с ним, а с физическим файлом. делаешь фопен, сик и так далее....
← →
brother © (2011-11-18 10:14) [5]> с физическим файлом. делаешь фопен, сик и так далее....
имхо да, тока с их обертками О_о или это не так?
← →
brother © (2011-11-18 10:17) [6]хм...
http://valeevildar.blogspot.com/2009/09/delphi-tmeminifile.html
← →
Anatoly Podgoretsky © (2011-11-18 10:18) [7]> brother (18.11.2011 10:01:00) [0]
StringStream
← →
DVM © (2011-11-18 10:20) [8]
> brother © (18.11.11 10:12) [3]
> а мне нужно из TMemoryStream он это умеет?
Можно научить. Посмотри, в TMemoryIniFile есть такой приватный метод:
procedure TMemIniFile.LoadValues;
var
List: TStringList;
begin
if (FileName <> "") and FileExists(FileName) then
begin
List := TStringList.Create;
try
List.LoadFromFile(FileName);
SetStrings(List);
finally
List.Free;
end;
end
else
Clear;
end;
К сожалению, не виртуальный. LoadFromFile заменяем на LoadFromStream и получаем то что тебе нужно. Еще аналогично можно подправить
procedure TMemIniFile.UpdateFile;
var
List: TStringList;
begin
List := TStringList.Create;
try
GetStrings(List);
List.SaveToFile(FFileName);
finally
List.Free;
end;
end;
Ну и в конструкторе переделать, передавать туда TStream.
Т.е возмит за основу TMemIniFile и напиши свой класс.
← →
brother © (2011-11-18 10:22) [9]да придется чуть править TMemIniFile
procedure TForm1.Button1Click(Sender: TObject);
var
ini: TMemIniFile;
begin
ini:=TMemIniFile.Create("");
try
ini.WriteString("ini_section","parameter1","value");
memo1.Lines.Add(ini.ReadString("ini_section","parameter1",""));
finally
// ini.UpdateFile;
ini.Free;
end;
end;
главное, что тут можно не указывать имя файла, если не планируется сохранение!
← →
Медвежонок Пятачок © (2011-11-18 10:23) [10]имхо да, тока с их обертками О_о или это не так?
Обычный TIni:
Создал экземпляр, сохранил переменную юзаешь.
Необычный ини:
Создал экземпляр, сохранил в переменную, открыл физическийц ини, прочитал в какой-то там стрим, закачал в необычный ини, юзаешь. + Потерял нотификации системы об изменениях в физическом ини.
Вопрос:
в чем была мега-идея-то?
просто заморочиться?
← →
brother © (2011-11-18 10:28) [11]> в чем была мега-идея-то?
[3]
← →
Медвежонок Пятачок © (2011-11-18 10:30) [12]идея: держать структуру TIniFile в памяти и читать нужные секции и значения по необходимости...
Ты вообще интересовался вопросом, каким образом винда работает с ини файлами?
Перед тем как придумывать свой улучшайзер?
Или просто поковырял в носу и решил что у тебя будет лучше?
← →
brother © (2011-11-18 10:33) [13]теперь да, вопрос исчерпан. всем спасибо!
← →
brother © (2011-11-18 10:35) [14]зы.
> и решил что у тебя будет лучше
вот от этого как раз и хотел максимально избавиться!
← →
DVM © (2011-11-18 10:36) [15]
> brother © (18.11.11 10:35) [14]
> вот от этого как раз и хотел максимально избавиться!
От чего избавиться?
← →
brother © (2011-11-18 10:38) [16]изобретение своего велосипеда, использовать стандартные средства по максимуму, но видимо без написания своего
LoadFromStream не обойтись.
← →
Медвежонок Пятачок © (2011-11-18 10:40) [17]Мужик, ты немного порефлексируй над своими желаниями.
Почему может возникнуть желание считать файл в память один раз?
Потому что не хочется открывать этот файл несколько раз.
А почему оно возникло у тебя?
Потому что ты думаешь, что Tini, каждый раз, когда ты читаешь значение из ини , открывает файл заново и затем закрывает его. И так каждый раз.
← →
brother © (2011-11-18 10:46) [18]эх, до чего ж ты упертый, объясню еще раз:
Есть TMemoryStream содержащий в себе структуру Ini, фактически, файла со структурой TIniFile нет.
Задумался, как лучше работать со структурой ini в TMemoryStream...
Пришел к выводу в посте [9] с небольшим допилом, те велосипед будет (LoadFromStream), но минимальный.
Профит!
← →
Anatoly Podgoretsky © (2011-11-18 10:55) [19]> brother (18.11.2011 10:46:18) [18]
ИНИ файл системой полностью считывается в память, потом работа ведется с
памятью.
Поэтому не понятна задача писать велосипед.
← →
Медвежонок Пятачок © (2011-11-18 10:57) [20]Сначала:
Работаю с файлами: структура INI, необходимо чтение данных, файл нужно держать в памяти
Сейчас:
Есть TMemoryStream
← →
brother © (2011-11-18 10:58) [21]> ИНИ файл
блин, файла нет! есть только стрим, как со стримом работать?
← →
Медвежонок Пятачок © (2011-11-18 11:01) [22]> с физическим файлом. делаешь фопен, сик и так далее....
имхо да, тока с их обертками О_о или это не так?
Что и требовалось доказать.
У чувака есть ини файл на диске и оно думает, что файло открывается и закрывается классом инифайл каждый раз, когда оно оттуда что-то читает.
← →
Медвежонок Пятачок © (2011-11-18 11:01) [23]есть только стрим,
Если файла нет, то стрим будет пустой
← →
RWolf © (2011-11-18 11:03) [24]
> файла нет! есть только стрим
почему бы не организовать временный файл и выгрузить в него стрим?
где-нибудь в %TEMP%.
← →
brother © (2011-11-18 11:04) [25]> Работаю с файлами: структура INI, необходимо чтение данных,
> файл нужно держать в памяти
читать как:
работаю с файлами контейнерами (свой формат), читаю из контейнера структуру ini в стрим, после чтения, необходимо добраться до структуры ini и прочитать необходимые значения.
> Сейчас:
>
> Есть TMemoryStream
да сейчас уточнил как есть...
← →
Медвежонок Пятачок © (2011-11-18 11:04) [26]да есть у него файл. уже доказано наукой.
← →
Медвежонок Пятачок © (2011-11-18 11:07) [27]читать как:
работаю с файлами контейнерами (свой формат), читаю из контейнера структуру ini в стрим,
на самом деле читать так:
я придумал велосипед с квадратными колесами, создал их десять штук и поместил в коробку из под холодильника. Идея: когда вынимаешь велосипед из коробки, надо чтобы колеса делались круглыми.
← →
brother © (2011-11-18 11:07) [28]> почему бы не организовать временный файл и выгрузить в него
> стрим?
нет! от этого и хочу отказаться...
> Если файла нет, то стрим будет пустой
нет! см [9], файла нет, а TMemIniFile уже не пустой (это для примера). TMemIniFile можем принимать как TMemoryStream по сути(те работаем с паматью, а не с файлом)?
← →
Медвежонок Пятачок © (2011-11-18 11:09) [29]нет! от этого и хочу отказаться...
Отказываться надо от контейнера и напёханных в него псевдо-ини структур.
← →
brother © (2011-11-18 11:09) [30][27] сколько можно оффтопа?
← →
brother © (2011-11-18 11:10) [31]> Отказываться надо от контейнера и напёханных в него псевдо-
> ини структур.
ты мне будешь говорить, что делать? ты хоть на один мой вопрос нормально по теме ответил?
← →
Медвежонок Пятачок © (2011-11-18 11:12) [32]на дурацкие вопросы есть кому отвечать без меня.
а я тебе сознание хочу просветлить.
← →
brother © (2011-11-18 11:17) [33]> а я тебе сознание хочу просветлить.
ты считаешь, я безумен? мой подход? зачем лезть, если не вкурсе, что требуется реализовать?
по реализации возник вопрос - я спросил, привел пример, все для себя выяснил, в [9] привел выводы.
[10] и дальнейшие твои посты начинаются уже твои мысли по моей теме: зачем, велосипед, отказаться итп...
← →
Медвежонок Пятачок © (2011-11-18 11:26) [34]я в курсе чего требуется реализовать.
ты хочешь хранить и читать настройки.
ты выбрал структуру хранение и класс для чтения.
и выбрал неудачно, потому что класс не умеет загружаться из структуры.
вот и вся философия.
и вместо того, чтобы выбрать другую структуру и другой класс которые любят друг друга, ты в муках рожаешь костыли для неудачно выбранного класса.
← →
Медвежонок Пятачок © (2011-11-18 11:29) [35]навскидку:
банальный стринлист с Names и Values все уже умеет.
Но в нем нет секций.
Зато есть xml в котором секций сколько хочешь.
да мало ли чего еще есть, если подходить к выбору инструментов с умом.
← →
DVM © (2011-11-18 11:31) [36]
> Зато есть xml в котором секций сколько хочешь.
Я ждал этого!!! :) Странно, что всплыло только на 35 посте. :)
← →
brother © (2011-11-18 11:31) [37]> и выбрал неудачно, потому что класс не умеет загружаться
> из структуры.
мой класс, вот я это и реализую... что не понятно? зачем показывать, себя умным?
приведи пример своего класса, я посмотрю, если мне подойдет, приму. Пока все твои слова оффтоп, сколько можно то? кайф пословоблудить?
← →
Медвежонок Пятачок © (2011-11-18 11:33) [38]А я ждал этого
Я ждал этого!!! :)
но думал, что пройдет от силы секунд 15.
← →
brother © (2011-11-18 11:33) [39]> Зато есть xml в котором секций сколько хочешь.
я знаю, что он любитель xml) сам в шоке, что только на 36 посте начал его двигать)
← →
Медвежонок Пятачок © (2011-11-18 11:35) [40]зачем показывать, себя умным?
Да мало ли зачем?
Я же не спрашиваю, зачем ты показываешь себя глупым.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2014.02.09;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.003 c