Главная страница
    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.007 c
1-71212
Просто прохожий
2002-08-10 17:25
2002.08.22
Фокус


1-71118
Jony
2002-08-09 12:42
2002.08.22
Вызов всплывающего меню с клавиатуры


6-71280
newbie1
2002-06-11 14:35
2002.08.22
немогу получить сообщение от сервера


1-71125
maxim2
2002-08-13 10:05
2002.08.22
Можно ли отловить двойной клик правой клавиши мыши на элементе


1-71087
nebula_
2002-08-12 12:18
2002.08.22
OleContainer





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