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

Вниз

Ошибка :(   Найти похожие ветки 

 
Me2   (2002-08-13 04:16) [0]

Мастера, помогите найти ошибку. В блокноте создаю текстовой файл, каждая строка должна записываться в динамический массив Rules типа string. Решил я через ShowMessage посмотреть, чем же наполняется массив... А там квадратик выскакивает в окошке вместо нужных строк. Текстовой файл - это ini, но используется не только как ini file.
ini file listing :
[Settings]
Host=web
CheckPeriod=24

[Rules]
Log=Application;Source=DrWatson;Type=error;Event=2018
Log=System;Type=error
;вот эти две строки и должен считывать

function RulesInit : boolean;
var
TF: Text;
TempString : String;
i: Integer;
begin
AssignFile(TF,IniPath+"/web.ini");
Reset(TF);

repeat
Readln(TF, TempString)
until TempString="[Rules]";

i:=0;
RulesSize:=0;
repeat
Readln(TF);
Inc(i);
until Eof(TF);
RulesSize:=i;

repeat
Readln(TF)
until TempString="[Rules]";
SetLength(Rules, RulesSize);
for i:=0 to RulesSize-1 do ReadLn(TF, Rules[i]);
for i:=0 to RulesSize-1 do ShowMessage(Rules[i]);
//и вот в окошечке выскакивает символ квадратика вместо строки
CloseFile(TF);
if RulesSize=0 then RulesInit:=False;
end;


 
Poirot   (2002-08-13 04:43) [1]

Слухай... Юзай TINIFile... Если очень хочется....
А в противном случае давай полный код...

> repeat
> Readln(TF)
> until TempString="[Rules]";

зачем!!!!


 
Me2   (2002-08-13 04:49) [2]

Да я юзаю TIniFile. Для строк типа

[Settings]
Host=web
CheckPeriod=24

Но дело-то в том, что кроме всего прочего, в конце его строчки (начинающиеся с log=...), которых может быть произвольное количество - это правила фильтрации записей. Их можно ReadString-ом прочитать, но это если б их количество было фиксированное .



 
Poirot   (2002-08-13 05:00) [3]

как рулез объявлен?
так ты узнать их колво разве не можешь.... ты для каждой секции можешь получить список ключей... угадай что дальше (может парю)...


 
Me2   (2002-08-13 05:34) [4]

? :)
Пожалуй, я слишком начинающий для этого (список ключей)
Ну а объявлен массив
Rules : array of string;


 
ЮЮ   (2002-08-13 06:04) [5]

А если вместо array of string использовать StringList, все строки из [Rules] тогда можно считать одной строкой:
INI.ReadSection ("Rules",Rules);


 
Poirot   (2002-08-13 06:07) [6]

Тупизм!!! Я уже запрогел!!! Ты конец файла читаешь... надо опять подниматься на Рулес...

CloseFile(TF);
Reset(TF);
repeat
Readln(TF)
until TempString="[Rules]";
SetLength(Rules, RulesSize);
for i:=0 to RulesSize-1 do ReadLn(TF, Rules[i]);
for i:=0 to RulesSize-1 do ShowMessage(Rules[i]);
//и вот в окошечке выскакивает символ квадратика вместо строки
CloseFile(TF);
if RulesSize=0 then RulesInit:=False;


 
Poirot   (2002-08-13 06:10) [7]


> ЮЮ ©

Ты прав, но тут проблем...
Он получит
Log
Log

А если попробует считать значения получит н строк первых у рулез...
Вуаля....
Да ещё глюкнул не ReadLN(TF) а ReadLN(TF, TempString)


 
Me2   (2002-08-13 06:19) [8]

Спасибо, ЮЮ :)
Спасибо, Poirot
Там у тебя только маленькая неточность в строке...
не просто Readln(TF), а Readln(TF, TempString)...но это по большому счету придирки :)
Действительно, читался EOF. Проблема решена, я рад... впервые на форуме кто-то действительно дельное посоветовал , помог.


 
Poirot   (2002-08-13 06:20) [9]

if RulesSize=0 then RulesInit:=False;
Сорри но это как-то непонащему....
Result:=RulesSize<>0;
Result - возр значение функциии...
Забудь ПАСКАЛЬ


 
ЮЮ   (2002-08-13 07:05) [10]

> Poirot ©
Он получит
Log
Log

С чего это ты взял? В Rules.Names - да, а в Rules.Strings - полноценные строки.


 
Poirot   (2002-08-13 07:47) [11]

Проверял... Сам попробуй... коли неверишь...


 
ЮЮ   (2002-08-13 08:04) [12]

Sorry. ReadSectionValues, конечно.


 
Poirot   (2002-08-13 08:43) [13]


> ЮЮ © ReadSectionValues

Ooop.. Error Again!!! возвращает н-ое кол-во первых строк (н=кол-во одинаковых ключей)...



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

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

Наверх




Память: 0.47 MB
Время: 0.008 c
1-71109
Poirot
2002-08-10 01:14
2002.08.22
ShareMem - ошибка при выгрузке библиотеки...


1-71150
michael_b
2002-08-13 14:00
2002.08.22
как вызвать HTML help из программы


1-71138
delta
2002-08-13 14:10
2002.08.22
Hooks


14-71336
Виталий К.
2002-07-23 18:11
2002.08.22
Планировщик в Виндос 98


4-71427
Sodom
2002-06-19 12:33
2002.08.22
Keyboardhook





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