| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| Kott 
 
 
 Joined: 24 Jun 2003
 Posts: 1
 Location: Петров Константин Владимирович
 Occupation: менеджер
 Interests: Новосибирск
 
 | 
			
				|  Posted: 24 Jun 2003 07:48    Post subject: Как читать и писать в FPT-файл средствами VFP |   |  
				| 
 |  
				|  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дорогой Денис 
 
 
 Joined: 09 Apr 2003
 Posts: 37
 Location: Дорогой Денис
 Occupation: Алтай-Интеллект-Сервис
 Interests: Барнаул
 
 | 
			
				|  Posted: 24 Jun 2003 07:53    Post subject: |   |  
				| 
 |  
				| Клиппер позволяет хранить в момо-полях массивы. Это широко используется в БЭСТ-4. (например книга покупок продаж, счета фактуры - там в мемо полях информация по ставкам и суммам НДС.) FoxPro хранить массивы в мео полях не умеет.
 Поэтому, насколько я понимаю, никак.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| WiRuc 
 
 
 Joined: 27 Aug 2002
 Posts: 39
 
 
 
 
 | 
			
				|  Posted: 24 Jun 2003 09:44    Post subject: |   |  
				| 
 |  
				| Еще раз повторюсь   Никто не мешает всю подготовку и обработку данных делать на Фоксе, а затем записывать изменения в базы с помощью небольшой проги на Клиппере. Я так делал с книгой прода
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Алексей З. 
 
  
 Joined: 08 Jan 2003
 Posts: 344
 Location: Зызин Алексей
 Occupation: ЗАО "Ренова", программист
 Interests: Москва
 
 | 
			
				|  Posted: 24 Jun 2003 09:47    Post subject: |   |  
				| 
 |  
				| На самом деле в fpt-файлах находится ВСЁ ТО, что находится в мемо-полях соответствющего dbf-файла. И всё что вы видите в мемо-полях - это содержимое fpt-файла. Т.е. чтобы ввести новую, изменить или удалить информацию из fpt-файла - редактируются соответствующие мемо-поля. Что касается хранения массивов в мемо-полях, то это возмозможно в любой dbf-базе. И не важно Fox это, или Clipper, или Paradox! Они обычно представляют собой цепочку данных с фиксированными разделителями. Записываются и считываются они в каждом случае при помощи своей собственной обработки (подпрограммы).
 
 PS. И вообще, прежде чем что-то править в базах полезно сначала почитать какие-нибудь учебники по этому предме
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| WiRuc 
 
 
 Joined: 27 Aug 2002
 Posts: 39
 
 
 
 
 | 
			
				|  Posted: 25 Jun 2003 12:12    Post subject: |   |  
				| 
 |  
				| Спорим что-это не так? Читайте доку по клипперу, хранение массивов в мемо-полях - привилегия SIXCDX, Фокс такие поля не понимает.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Алексей З. 
 
  
 Joined: 08 Jan 2003
 Posts: 344
 Location: Зызин Алексей
 Occupation: ЗАО "Ренова", программист
 Interests: Москва
 
 | 
			
				|  Posted: 25 Jun 2003 12:24    Post subject: |   |  
				| 
 |  
				| Клиппер я уже забыл. Немного поработал с ним в начале 90-х и всё. 
 Но:
 Ты же можешь в txt-файле сохранить массив?! Что тебе мешает его же сохранить в мемо-поле? Ведь эти поля - суть большущщее текстовое поле со множеством строк и колонок, как чистый (или заполненный) текстовый файл.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| WiRuc 
 
 
 Joined: 27 Aug 2002
 Posts: 39
 
 
 
 
 | 
			
				|  Posted: 25 Jun 2003 13:39    Post subject: |   |  
				| 
 |  
				| Очевидно, разработчики SIXCDX решили сделать по-другому. Откройте файл book в REAL и убедитесь сами. Длина мемо-поля SUM_DATA равна 0, хотя там как раз хранится массив.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Алексей З. 
 
  
 Joined: 08 Jan 2003
 Posts: 344
 Location: Зызин Алексей
 Occupation: ЗАО "Ренова", программист
 Interests: Москва
 
 | 
			
				|  Posted: 25 Jun 2003 14:10    Post subject: |   |  
				| 
 |  
				|  	  | WiRuc wrote: |  	  | ... Длина мемо-поля SUM_DATA равна 0... | 
 Естественно!
 Цитата из учебника по VFP: "Тип данных Memo - обозначается М, длинна 0, десятичных знаков 0, объем 4 байта. Тип данных Memo в записи таблицы - это поле примечаний для ссылки на блок данных". (А. Гореев. "VFP 5.0", FoxTalk).
 
 Вышеуказанный блок данных находится в fpt-файл
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| WiRuc 
 
 
 Joined: 27 Aug 2002
 Posts: 39
 
 
 
 
 | 
			
				|  Posted: 25 Jun 2003 14:51    Post subject: |   |  
				| 
 |  
				| Так... Значит начнем с азов   Естественно, поле мемо - не более, чем ссылка на позицию в файле fpt. Это значит, что если в мемо-поле нет данных, то хранится 0, иначе - ссылка на реальные данные. Поэтому, в Фоксе принципиально не может быть ситуации, когда ссылка на данные присутствует, а длина самих данных равна нулю (то бишь их нет).  За исключением разрушенных файлов, естественно.
  Теперь, открываем в Фоксе файл book и видим, что у поля sum_data слово Memo написано с большой буквы. Тем самым Фокс показывает, что в мемо-поле есть ссылка на реальные данные. Теперь, делаем len(sum_data) и получаем... 0. Т.е. хотя ссылка на данные есть, самих данных НЕТ. Это как раз связано со спецификой хранения массивов в мемо-полях. Из Фокса вы эти поля никак не получите  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |