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

Вниз

чтение/запись в ini файл   Найти похожие ветки 

 
Delphuk ©   (2007-10-05 12:33) [0]

Здравствуйте. Столкнулся с проблемой при чтении/записи многострочного текста в ini файл. Т.к. текст многострочный (берётся из

Memo), то использование метода ValueString не подходит. Решил воспользоваться методом ValueData, делал примерно следующим

образом:

(запись)
......
Var
ini: PIniFile;
str: String;
.......
begin
ini := OpenIniFile("C:\my.ini");
ini.Mode := ifmWrite;
ini.Section := "testing";
str := Memo1.Text;
ini.ValueData("Text", @str, SizeOf(str));
ini.Free;
.......
end;


(чтение)
Var
ini: PIniFile;
str2: String;
.......
begin
ini := OpenIniFile("C:\my.ini");
ini.Mode := ifmRead;
ini.Section := "test";
ini.ValueData("Text", @str2, SizeOf(str2));
ini.Free;
Memo.Text := str2;
.......
end;


Если записывать и считывать текст за одну сессию (втечении первого запуска программы), то данный код работает. А если же

считывать данные из ини файла после второго и последующих запусках проги, то в Memo появляется черти что, а потом вообще

приложение вылетает с ошибкой. Я так понимаю, что неправильно использую указатели и тд... Подскажите пожалуйста как нужно

правильно выполнить запись и чтение многострочного текста, именно в ини файле.


 
Delphuk ©   (2007-10-05 12:35) [1]

P.S.
Поправочка, при чтении указывают ту же секцию ini.Section := "testing"


 
Robt   (2007-10-05 14:12) [2]


> использование метода ValueString не подходит

почему не подходит ?
сохраняеш одну строку где вместо интера (#13#10) другой символ и наоборот
функции соответствущие есть


 
Дмитрий К ©   (2007-10-05 14:14) [3]

SizeOf заменить на Length.
Выделять память при чтении (SetLength) столько, сколько было записано, т.е. нужно запоминать длину строки.


 
Robt   (2007-10-05 14:19) [4]

и вобще зачем PIniFile?
сохраняй как есть через мемо в файл с расширением ini


 
Delphuk ©   (2007-10-05 17:35) [5]

Robt писал:
почему не подходит ?
сохраняеш одну строку где вместо интера (#13#10) другой символ и наоборот функции соответствущие есть.


Это какие же функции? Пример можно?

Robt писал:
и вобще зачем PIniFile?
сохраняй как есть через мемо в файл с расширением ini


Потому что так нужно :) У меня есть набор однотипных данных, к которым нужен быстрый доступ. Например:
[same key1]
value(boolean)=1
value2(integer)=666
value3= Произвольный текст из нескольких строк

[same key2]
value(boolean)=0
value2(integer)=999
value3= Произвольный текст из нескольких строк
...........
И так далее.

Дмитрий К, оки, посмотрю что получится. Но всё равно вопрос остаётся открытым.


 
Robt ©   (2007-10-08 16:30) [6]


> Это какие же функции? Пример можно?

strreplace например :)


 
Vladimir Kladov ©   (2007-10-08 20:27) [7]

Гораздо правильнее каждую строку сохранять как отдельную строку. И в любом случае, учтите, что при использовании старых платформ (9х) ини файл не должен превышать 32 (или 64) К.


 
Delphuk ©   (2007-10-08 22:45) [8]

Robt писал:
почему не подходит ?
сохраняеш одну строку где вместо интера (#13#10) другой символ и наоборот
функции соответствущие есть
strreplace например :)


Спасибо, именно так и сделал :) Вот как бывает, когда мало юзаешь строки а работаешь только с математикой :)
Vladimir Kladov, а какие ограничения на длину одной строки при использовании ValueString?


 
Robt ©   (2007-10-09 12:39) [9]

размер буфера в ValueString = 4095
и используются системные функции такчто может и ещо меньше
если многа надо луче свой формат стелать


 
mdw ©   (2007-10-09 13:54) [10]

Я недавно реализовал IniFile для winCE, работает аналогично стандартному, но основан на StrList, т.е. не ограничен в размерах. Попробуй, может подойдет?


 
Delphuk ©   (2007-10-09 14:50) [11]

Спасибо, пока что штатных средств KOL хватает, если не будет хватать места, то конечно же посмотрю вашу реализацию.



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

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

Наверх




Память: 0.47 MB
Время: 0.595 c
2-1213697117
Муслик
2008-06-17 14:05
2008.07.20
Копирование текста


2-1213959404
Alex_C
2008-06-20 14:56
2008.07.20
Вопрос по GetObjectProp


2-1213909820
DJ_UZer
2008-06-20 01:10
2008.07.20
Ищем файлы в определенной папке по маске


2-1213780489
lewka-serdceed
2008-06-18 13:14
2008.07.20
Выделение в ListBox


4-1192817632
NiGGa
2007-10-19 22:13
2008.07.20
USB





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