Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 637

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Возможно ли сортировать сектора в ini файле ?

Вот так вышлядит мой файл:
[1]
asd=asd
[2]
asd=asd
[3]
asd=asd
[4]
asd=asd
[5]
asd=asd
[6]
asd=asd
[7]
asd=asd
[8]
asd=asd

затем мне нужно удалить пару секторов(к примеру)

[1]
asd=asd
[2]
asd=asd
[3]
asd=asd
[6]
asd=asd
[7]
asd=asd
[8]
asd=asd

4 и 5 сектора нет, и получился разнобой, вот мне и нужно отсортировать сектора чтобы они выглядели:

[1]
asd=asd
[2]
asd=asd
[3]
asd=asd
[4]
asd=asd
[5]
asd=asd
[6]
asd=asd


Помогите пожалуйста!

unl0K Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: unl0K (статус: Посетитель)
Вопрос отправлен: 14 апреля 2009, 20:20
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 20; последнее сообщение — 15 апреля 2009, 20:35; участников в обсуждении: 4.
min@y™

min@y™ (статус: Доктор наук), 14 апреля 2009, 20:36 [#1]:

Йо, мать моя женьщина? Ну нафига такоей изврат нуж0н-то?
Ну загрузи ты все данные в память, а потом в цикле да по секциям

фор Ы:= 0 ту СкокаНадо - 1 ду
бегин
ИниФайл.РайтСтринг(ИнтТуСтр(Ы + 1), 'asd', 'asd');
енд;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 14 апреля 2009, 20:42 [#2]:

Мне обязятельна нужно сортировка!
Как считывать и записывать данные в ини файл я прикрасно знаю!
В вашем коде решения я не увидел!

Покажите на примере, что вы имели введу с пямятью!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 14 апреля 2009, 21:01 [#3]:

Берём данные из файла, записываем в массив, сортируем его, пишем обратно в файл. Чо тут непонятного? В качестве массива можно юзать TStringList.

Но, если кол-во секций и имя-значение единственного параметра в каждой секции известны, тогда зачем городить ini-файл вообще?

var
  F: TextFile;
  Index: Integer;
begin
  AssignFile(F, 'C:\pagefile.sys');
  Rewrite(F);
 
  {$i-}
  for Index:= 1 to 6 do
    begin
      WriteLn(F, '[', Index,  ']');
      WriteLn(F, 'asd=asd');
    end;
  CloseFile(F);
 
  {$i+}
  if IOResult <> 0
    then raise E: Exception.Create('Аццкое АШЫПКО!!!');
end;
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 14 апреля 2009, 21:19 [#4]:

Извените, но это совсем не то!
Просто очень долго объяснять все, и скажу, что другово решения в моем случае нет - только ini и значения asd=asd это лишь пример!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 14 апреля 2009, 21:41 [#5]:

Каков вопрос, таков и ответ.
Конкретизируй, иначе не понятно, чего ж тебе надо.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 14 апреля 2009, 21:50 [#6]:

я же сказал нужно сортировать ini файл, причем какие и сколько значаний будет секторов неизвестно нужно как-то отсортировать название секторов(они всегда будут цифры)!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 15 апреля 2009, 00:18 [#7]:

А в чем проблема отсортировать? или просто хочется что бы в ини файле были отсортированы? а зачем от этого TIniFIle ни жарко ни холодно.
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 01:22 [#8]:

Конечно все это - не просто!
Мне просто в дальнейшей работе нужно - что бы все названия секторов шли по порядку (1 2 3 4 5 6 но не 1 2 4 5 6), это в дальнейшем вызывает много проблем(все расказать не могу, очень долго,работа с деревом, только не нужно предлогать свои варианты работы с данными , меня интересует именно этот вопрос)!
Мне просто нужно узнать возможно ли это?
Если нет, то так и скажите!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 15 апреля 2009, 05:47 [#9]:

отчего же нельзя? Можно сделать примерно так:
var tt:TStringList;
i1,i2:integer;
...
tt:=TStringList.create;
try
tt.loadfromfile('');
i1:=1;
for i2:=0 to tt.count-1
if <это номер сектора>
then begin
<формируем новый номер сектора из i1>
<помещаем новый номер сектора в строку>
i1:=inc(i1);
end;
tt.SaveToFile('');
finally
tt.free;
end;
end;
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 11:27 [#10]:

Мережников Андрей, да НО!
При формировании нового сектора все данные в секторе удаляются!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 15 апреля 2009, 12:38 [#11]:

to AHJIoKeR
Загружаем в память в массив массивов (это ведь не прямоугольный двухмерный массив), или ещё лучше на базе TList+TStringList делаем класс. В памяти сортируем как хотим. А потом сохраняем на диск. и при сохранении не используем TIniFile.

Сложно найти черную кошку в темной комнате, особенно, если её там никогда не было. Вот так и Вы предлагаете решать задачу...
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 17:09 [#12]:

Загружаем в память в массив массивов - круто сказанно!
Я так понимаю речь идет о динамической памяти, если да - то я с ней работать не умею, если покажите буду рад!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
Вадим К

Вадим К (статус: Академик), 15 апреля 2009, 17:27 [#13]:

А что такого в динамической памяти? кстати, динамическая память это совсем не то, о чем Вы говорите. И в данном случае Вам это принципиально никак не влияет.
а вот динамический массив - это да, такое есть.
обявляем так
a:array of string;//размер не указываем.
выставим какой то размер
SetLength(a, 10);
По ходу работы, массив можно уменьшать/увеличивать
надо помнить, что индексация начинается с нуля и до (размер минус 1).
В конце работы с массивом желательно попросить делфи освободить его
a := nil;
узнать текущий размер можно функцией length.
Хватит?
Галочка "подтверждения прочтения" - вселенское зло.
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 18:36 [#14]:

Вадим К, хватит))
Проблема начала решатся, но появились новые)
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2009, 18:52 [#15]:

Похоже, ты хочечь приспособить под свою задачу то, что для этого не предназначено.

Цитата:

все расказать не могу, очень долго,работа с деревом, только не нужно предлогать свои варианты работы с данными , меня интересует именно этот вопрос


И всё же, мой тебе совет: выкинь INI и возьмись за XML. Имхо, это то, что тебе нужно.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 19:58 [#16]:

min@y™ ты прав 100% !!!
Но сколько я инфы не искал, то находил только огромные листинги, и разобратся в этом мне не удалось!

Если бы ты объяснил как считать и как записать в XML был бы благодарен!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2009, 20:09 [#17]:

Мне не нравится стандартный TXMLDocument. Я юзаю TECXMLParser. Скачай себе, там есть примеры. Когда врубишься, всё будет очень легко. У меня теперь во всех прогах настройки и небольшие древовидные структуры данных хранятся только в XML. Могу ещё помочь модулем со вспомогательными функциями к этому парсеру.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 20:20 [#18]:

min@y™, спасибо! ща будем качать!
и модуль не мешало бы кинуть)
Относись к людям так, как хотел бы, чтобы они к тебе относились!
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2009, 20:29 [#19]:

Цитата:

и модуль не мешало бы кинуть)


Куда кидать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
unl0K

unl0K (статус: Посетитель), 15 апреля 2009, 20:35 [#20]:

можно на мыло AHJIoKeR@mail.ru

Думаю тебе будет интересно http://forum.sources.ru/index.php?showtopic=81572
лидер - TjanXMLParser2, но как с ним рабоать,даже примера нет!
Относись к людям так, как хотел бы, чтобы они к тебе относились!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 мая 2020, 01:18
Выполнено за 0.02 сек.
Рейтинг@Mail.ru