| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Вт Ноя 13, 2012 15:03   Разбор текстового файла |   |  
				| Полезность: Нет оценки 
 |  
				| Добрый день, есть текстовый файл, который жестко задан, например C:\temp\text.txt
 С определённой структурой например дата, № счёта.
 Требуется разобрать данный файл, я правильно понимаю что мы делаем так:
 
  	  | Код: |  	  | stroka varchar2;
 begin
 V_FILE.[DST_PATH] := 'C:\temp\';
 V_FILE.[DST_TYPE] := false;
 V_FILE.[DST_NAME]:='text.txt';
 file := stdio.open(V_FILE.[DST_PATH], V_FILE.[DST_NAME], 'r');
 
 | 
 Что то клинануло, а как написать loop который по строчно считаем данные и запишет их в stroka до тех пор пока не найдёт конец файла?
 |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Вт Ноя 13, 2012 17:03    |   |  
				| Полезность: Нет оценки 
 |  
				| Попробовал написать так, но выпадает ошибка при открытии файла - ORA-20100: EXEC-FILEPATH: [./text.txt] Файл не найден. Что то не правильно описал в ::[TAX_LIMIT_FILES].[LIB].CopyFile ?
 
 
  	  | Код: |  	  | file      integer;
 str      string;
 v_idx number:=0;
 begin
 V_FILE.[SRC_PATH] := 'C:\temp\';
 V_FILE.[DST_PATH] := '.';
 V_FILE.[SRC_TYPE] :=false;
 V_FILE.[SRC_NAME]:='text.txt';
 ::[TAX_LIMIT_FILES].[LIB].CopyFile(v_idx, true, V_FILE.[SRC_NAME], V_FILE.[SRC_PATH], V_FILE.[DST_PATH], false, p_not_copy == true);
 debug_pipe('v_idx='||v_idx||',SRC_NAME='||V_FILE.[SRC_NAME]||'DST_PATH='|| V_FILE.[DST_PATH],0);
 file := stdio.open(V_FILE.[DST_PATH], V_FILE.[SRC_NAME],'r');
 debug_pipe('      Файлы открыты',0);
 while stdio.get_line(file, str, null, stdio.wintext, null) loop
 debug_pipe(str,0);
 end loop;
 stdio.close(file);
 end;
 
 | 
 |  |  
		|  |  
		| devor Профи
 
 
 Вступление в Клуб: 13.02.2012
 
 | 
			
				|  Вт Ноя 13, 2012 18:57    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | yaffil пишет: |  	  | Попробовал написать так, но выпадает ошибка при открытии файла - ORA-20100: EXEC-FILEPATH: [./text.txt] Файл не найден. Что то не правильно описал в ::[TAX_LIMIT_FILES].[LIB].CopyFile ?
 
 | 
 
 Заданный путь
 V_FILE.[DST_PATH] := '.';
 влечет за собой
 [./text.txt]  Файл не найден
 |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Вт Ноя 13, 2012 22:44    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | devor пишет: |  	  | Заданный путь
 V_FILE.[DST_PATH] := '.';
 влечет за собой
 [./text.txt]  Файл не найден
 | 
 
 А как его надо писать? Это же путь для ораклового сервера, т.е. он копируется  из V_FILE.[SRC_PATH] := 'C:\temp\';
 в корень IBS/
 
 По функции ::[TAX_LIMIT_FILES].[LIB].CopyFile я правильно всё указал по параметрам?
 |  |  
		|  |  
		| Alexsey Эксперт
 
 
 Вступление в Клуб: 06.09.2007
 
 | 
			
				|  Ср Ноя 14, 2012 09:47    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | yaffil пишет: |  	  |  	  | devor пишет: |  	  | Заданный путь
 V_FILE.[DST_PATH] := '.';
 влечет за собой
 [./text.txt]  Файл не найден
 | 
 
 А как его надо писать? Это же путь для ораклового сервера, т.е. он копируется  из V_FILE.[SRC_PATH] := 'C:\temp\';
 в корень IBS/
 
 По функции ::[TAX_LIMIT_FILES].[LIB].CopyFile я правильно всё указал по параметрам?
 | 
 
 напиши
 
  	  | Код: |  	  | V_FILE.[DST_PATH] := ::[SYSTEM_PARAMS].[GET]('PATH', false); | 
 
 Ну и ты еще отказался от вызова операции COPYFILES, т.к. поставил p_not_copy = true;
 в функции вызов копирования файлов осуществляется по false
 код должен выглядеть так:
 
  	  | Код: |  	  | ::[TAX_LIMIT_FILES].[LIB].CopyFile(v_idx, true, V_FILE.[SRC_NAME], V_FILE.[SRC_PATH], V_FILE.[DST_PATH], false, false); | 
 _________________
 всегда есть как минимум 2 выхода
 |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Ср Ноя 14, 2012 09:57    |   |  
				| Полезность: Нет оценки 
 |  
				| Всяко писал, в том числе и вот так: 
  	  | Код: |  	  | stdio.Get_Env('FIO_ROOT_DIR') | 
 
 Результат один - файл не найден.
 Возможно такое, что это из за того, что банк находится на ЦФТ аутсортинге, т.е. вся база в Новосибирске, доступ осуществляется через Remote Desktop Services?
 И как быть в такой ситуации?
 |  |  
		|  |  
		| Alexsey Эксперт
 
 
 Вступление в Клуб: 06.09.2007
 
 | 
			
				|  Ср Ноя 14, 2012 10:12    |   |  
				| Полезность: Нет оценки 
 |  
				| В таком случае клиент находится на сервере, предоставляющем удаленный доступ. _________________
 всегда есть как минимум 2 выхода
 |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Ср Ноя 14, 2012 10:23    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | Alexsey пишет: |  	  | В таком случае клиент находится на сервере, предоставляющем удаленный доступ. | 
 
 Я вижу данный файл в своей папке, например через загрузку карточки образцов подписей, но, никаким макаром не могу его считать, т.е. stdio работает только с ОРАКЛОЙ, и походу туда я никак не могу его перекинуть почему-то.
   Что делать, куда копать?
 |  |  
		|  |  
		| Alexsey Эксперт
 
 
 Вступление в Клуб: 06.09.2007
 
 | 
			
				|  Ср Ноя 14, 2012 12:14    |   |  
				| Полезность: Нет оценки 
 |  
				|  	  | yaffil пишет: |  	  |  	  | Alexsey пишет: |  	  | В таком случае клиент находится на сервере, предоставляющем удаленный доступ. | 
 
 Я вижу данный файл в своей папке, например через загрузку карточки образцов подписей, но, никаким макаром не могу его считать, т.е. stdio работает только с ОРАКЛОЙ, и походу туда я никак не могу его перекинуть почему-то.
   Что делать, куда копать?
 | 
 переложить файл, чтобы его можно было взять с удаленного сервера, а затем средствами ЦФТ-Банк затянуть его через FIO на сервер и обработать
 _________________
 всегда есть как минимум 2 выхода
 |  |  
		|  |  
		| yaffil Профи
 
 
 Вступление в Клуб: 18.08.2011
 
 | 
			
				|  Чт Ноя 15, 2012 08:16    |   |  
				| Полезность: Нет оценки 
 |  
				| Проблема решилась, всем спасибо. |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |