Форум: "Основная";
Текущий архив: 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