Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-71170
Uran
2002-08-13 16:01
2002.08.22
ЗАпись CDR


8-71274
Fredericco
2002-04-16 15:04
2002.08.22
Интересненький вопрос по графике :-)


7-71391
Alexander
2002-06-09 01:39
2002.08.22
Как изменить иконку для какого-либо диска в проводнике?


7-71386
Lelik17
2002-06-07 12:49
2002.08.22
Ошибка при попытке позвонить через модем


1-71224
Сергей Плоткин
2002-08-11 14:45
2002.08.22
Как послать сообщение одной копии программы другой?