Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.11.2012, 12:38
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию ini файлы, многострочные переменные

Доброго времени суток!

Вопрос: как сделать (и возможно ли это) многострочную переменную в .ini файле?

Например
Код:
[section]
value1=1
value2=2
value3=123
       456

В итоге получаем 3 переменные {1, 2, 123}, т.е. последняя строка "456" теряется.

а хочется получить {1, 2, 123 \n 456}.


Можно нечто типа
Код:
value3=123 \n 456
а потом строку пропарсить.

Но это маразменно + коллеги не поймут такой шутки.
Ответить с цитированием
  #2  
Старый 26.11.2012, 12:52
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 660
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Как-то так
Код:
  Memo1.Lines.Delimiter := '#';
  Button1.Caption := Memo1.Lines.DelimitedText;
  Memo2.Lines.Delimiter := '#';
  Memo2.Lines.DelimitedText := Button1.Caption;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 26.11.2012, 12:54
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
procedure WriteBinaryStream(const Section, Name: string; Value: TStream);
function ReadBinaryStream(const Section, Name: string; Value: TStream): Integer;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 26.11.2012, 13:16
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию

вопрос немного в другом:

я хочу получить из ini-файла многострочную переменную, а - не одностроковую переменную с разделителями из которой можно сделать многострочную.

Код:
value3=123
456

Проблема в том, что при чтении из ini-файла ini.ReadString - у меня задействуется только 1-я строка: т.е. в ini-файле найдена нужная секция, в ней найдено "value3=<значение>", далее я могу с помощью _ini.ReadString выцепить <значение>. Что на следующей строке написано - для ini.ReadString по-барабану.

Как проге объяснить, что в ini-файле одному значению соответствует 2 строки?

Т.е. вместо ini.ReadString хочу сделать нечто типа ini.ReadStringList.


Собстно на примере:

хочу чтоб в мемо отобразилось на двух строках
Код:
123
456

Метод
Код:
value3=123#456
с последующем отлавливанием разделителя # не катит.
Ответить с цитированием
  #5  
Старый 26.11.2012, 13:25
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
с последующем отлавливанием разделителя # не катит
почему не катит то? я бы пробел взял как разделитель
__________________
>woweook<
Ответить с цитированием
  #6  
Старый 26.11.2012, 13:35
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

ini-файлы не поддерживают многострочные строки. Так что штаными методами никак не получится. Или делайте свой разделитель, или храните многострочные значения вот так:
Код:
line1=asjdasjdad
line2=asj;asjd;lasd
line3=84rhwerlwe
или (я бы именно так и сделал) используйте реестр.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
U.B.M. (26.11.2012)
  #7  
Старый 26.11.2012, 13:42
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию

Цитата:
Сообщение от Pyro
почему не катит то? я бы пробел взял как разделитель

я бы тоже взял - но по "правилам игры" это нельзя. Именно поэтому вопрос и возник.

Aristarh Dark абсолютно правильно понял вопрос и дал ожидаемый ответ.
Ответить с цитированием
  #8  
Старый 26.11.2012, 13:43
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию

И ещё вопросик небольшой - для .conf-файлов под Linux такая же штука выходит?
Ответить с цитированием
  #9  
Старый 26.11.2012, 14:21
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Не пойму одного: кто мешает сделать свой парсер ini-подобного файла с поддержкой многострочных переменных? Там и парсить-то нечего.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #10  
Старый 26.11.2012, 14:30
U.B.M. U.B.M. вне форума
Новичок
 
Регистрация: 06.10.2011
Сообщения: 94
Версия Delphi: Delphi 7
Репутация: 13
По умолчанию

Цитата:
Сообщение от Bargest
Не пойму одного: кто мешает сделать свой парсер ini-подобного файла с поддержкой многострочных переменных? Там и парсить-то нечего.

Просто начальник немного не понимает значения слов, которые произносит. Парсер уже готов давно - так ему надо через жопу. Мол, ини-подобный файл это не ини-файл, значит так нельзя. Весь мозг выел мне Но я его перебодал.

А по поводу вопроса - интересовался, скажем так, для расширения кругозора.
Ответить с цитированием
  #11  
Старый 26.11.2012, 15:16
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

ini.readsection

Вычитывает тебе все лайны из секции инишника, интерпретируй как тебе надо. Там вроде какой-то готовый метод есть, позволяющий стринглисты писать, см. справку.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
U.B.M. (27.11.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter