29.01.2008, 11:38 | #1 |
Участник
|
IF CommonDlgMgt.OpenFileEx('Îòêðûòèå ýëåêòðîííîé íàêëàäíîé','',TextFilter,1) THEN BEGIN
IF NOT FILE.EXISTS(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName) THEN MESSAGE('Ôàéë ' + CommonDlgMgt.GetFileName + ' íå íàéäåí!') ELSE BEGIN f.TEXTMODE(TRUE); f.OPEN(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName); f.CREATEINSTREAM(StreamInObj); i := 1; WHILE NOT (StreamInObj.EOS()) DO BEGIN StreamInObj.READTEXT(buffer); IF buffer='[Header]' THEN BEGIN s2:=Explode(buffer,2); MESSAGE('Line No. %1 %2', i , s2); //ïîêàçàòü âòîðîå ïîëå i := i + 1; END; END; f.CLOSE(); END; END; Такое условие не принимает??? Я хочу так если Header то загружало в таблицу №1 Если Body то в таблицу №2 |
|
29.01.2008, 12:20 | #2 |
Участник
|
Попробуйте смотреть дебаггером.
Либо промежуточные результаты раскладывать по переменным, которые можно отслеживать дебаггером, либо выводить на экран мессаджами или конфирмами. Дебаггер - это инструмент отладки. Учитесь пользоваться им. |
|
29.01.2008, 12:38 | #3 |
MCTS
|
Формат файла считаем таким:
Цитата:
[Header]
‡ Є §;19;Џђ.‡-00077;9;?‚ЂЌЋ‚ Ђ.; ‡ Є §;29;Џђ.‡-00077;10;?‚ЂЌЋ‚ Ђ.; [Body] ‡ Є §;39;Џђ.‡-00077;11;?‚ЂЌЋ‚ Ђ.; ‡ Є §;49;Џђ.‡-00077;12;?‚ЂЌЋ‚ Ђ.; Код: f.TEXTMODE(TRUE); f.OPEN(CommonDlgMgt.GetPath + CommonDlgMgt.GetFileName); f.CREATEINSTREAM(StreamInObj); i := 0; gheader:=FALSE; //новая переменная WHILE NOT (StreamInObj.EOS()) DO BEGIN //читаем построчно. StreamInObj.READTEXT(buffer); i+= 1; CASE buffer OF // в зависимости от значения переменной buffer делаем следующие действия '[Header]'::gheader:=TRUE; //если хидер, то присваиваем переменной gheader значение Да '[Body]'::gheader:=FALSE //если началась секция боди, то присваиваем переменной gheader значение Нет ELSE //во всех остальных случаях (т.е. читаются строки с данными) производится вставка в таблицы IF gheader THEN BEGIN //в заголовок //инициализация новой записи rDocHeader.POLE1:=Explode(buffer,1); rDocHeader.POLE2:=Explode(buffer,2); ... rDocHeader.POLEN:=Explode(buffer,N); //вставка записи в таблицу END ELSE BEGIN //в табличную часть //инициализация новой записи rDocLine.POLE1:=Explode(buffer,1); rDocLine.POLE2:=Explode(buffer,2); ... rDocLine.POLEM:=Explode(buffer,M); //вставка записи в таблицу END; END; f.CLOSE(); |
|
29.01.2008, 13:02 | #4 |
Участник
|
CASE buffer OF // в зависимости от значения переменной buffer делаем следующие действия
'[Header]'::gheader:=TRUE; //если хидер, то присваиваем переменной gheader значение Да '[Body]'::gheader:=FALSE //если началась секция боди, то присваиваем переменной gheader значение Нет вот здесь делает ошибку что то тут не так. |
|
29.01.2008, 13:05 | #5 |
Участник
|
Код: CASE buffer OF '[Header]' : gheader := TRUE; '[Body]' : gheader := FALSE; ELSE BEGIN END; END; |
|
29.01.2008, 13:07 | #6 |
MCTS
|
Цитата:
Сообщение от Blade85
CASE buffer OF // в зависимости от значения переменной buffer делаем следующие действия
'[Header]'::gheader:=TRUE; //если хидер, то присваиваем переменной gheader значение Да '[Body]'::gheader:=FALSE //если началась секция боди, то присваиваем переменной gheader значение Нет вот здесь делает ошибку что то тут не так. Одно двоеточие, а не два. Он же так и пишет. |
|
30.01.2008, 03:21 | #7 |
Участник
|
Спаcибо тебе apanko !!!!! Очень помог!!!
|
|