Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

record s...подкиньте умную мысль...   Найти похожие ветки 

 
Shade   (2007-11-06 15:06) [0]

Доброго времени суток!
Для начала объясню вкратце что вообще пытаюсь сделать:
Есть несоколько программ которые работает с БД своей структуры (в простом случае - обычный типизированый файл). Необходимо выгрузить данные из этой программы в "текстовый" формат(текст,csv...неважно).

Все просто все понятно: открыли файл, прочитали запись - сформировали текстовую строку - записали в файл.

Вопрос собственно в чем: помогите найти красивое решение! =(
Таблиц много->структур много->каждую структуру надо переделать в строку:

rec = record
r1:array[0..2] of char;
r2:array[0..10] of char;
...
end;

str:=rec.r1+"  "+rec.r2+...

с классами можно с помощью rtti пройтись по всем published свойствам экземпляра и получить названия и значения свойств...

как чтото аналогичное можно сделать с рекордами? а то получается немерянное количество кола для "превращения" стурктуры в строку...

Надеюсь более-менее понятно написал..


 
Сергей М. ©   (2007-11-06 15:10) [1]


> Необходимо выгрузить данные из этой программы в "текстовый"
> формат


Нафига именно в текстовый ? Поясни ..


 
Ega23 ©   (2007-11-06 15:13) [2]


> с классами можно с помощью rtti пройтись по всем published
> свойствам экземпляра и получить названия и значения свойств.


В классе можно написать метод формирования строки на основании своей информации

type
 TCustomDBRecord = class
 public
   constructor Create (...)
   procedure Init(....)
   function MakeDataString : string; virtual;
 end;  

 TFirstTableClass = class(TCustomDBRecord)
 public
   Field1 : Integer;
   Field2 : string;  
   function MakeDataString : string; override;
 end;


Ход мыли ясен?

P.S. Я бы всё-таки не изобретал велосипед, а TClientDataSet использовал бы.


 
Правильный_Вася   (2007-11-06 15:14) [3]

ClientDataSet


 
Shade   (2007-11-06 15:18) [4]

это в принципе неважно...."в текстовый, в csv, загрузить в бд oracle..."...вопрос не в этом...
нужно разобрать структуру бд (документации нет, структура бд не описана) и выгрузить данные в нормалный читаемый вид...


 
Ega23 ©   (2007-11-06 15:20) [5]


> нужно разобрать структуру бд (документации нет, структура
> бд не описана) и выгрузить данные в нормалный читаемый вид.
> ..
>


Select * from ...


 
Shade   (2007-11-06 15:20) [6]

ммм... а как мне поможет ClientDataSet? чего то я туплю...


 
Сергей М. ©   (2007-11-06 15:21) [7]


> нужно разобрать структуру бд (документации нет, структура
> бд не описана)


Вот этим для начала и займись.


 
Shade   (2007-11-06 15:23) [8]


> Select * from ...


блин...какой селект? из чего? таблица - "обычный файл of MyRecord" - кто мне к нему sql запрос будет обрабатывать?


 
Shade   (2007-11-06 15:24) [9]


> Сергей М. ©   (06.11.07 15:21) [7]
> > нужно разобрать структуру бд (документации нет, структура
> > бд не описана)Вот этим для начала и займись.


занялся, разобрался... как к этому прикрутить ClientDataSet ?


 
Сергей М. ©   (2007-11-06 15:26) [10]


> как к этому прикрутить ClientDataSet ?
>


Зачем ?

Зачем тебе "читаемый вид" ? Кем или чем читаемый ?


 
Джо ©   (2007-11-06 15:28) [11]

> rec = record
> r1:array[0..2] of char;
> r2:array[0..10] of char;
> ...
> end;

Так почему тогда не:
rec = record
 e: array [0..23] of Char;
end;
?
Или это просто для примера?


 
Shade   (2007-11-06 15:32) [12]

да йопт...=)

кем?  пользователем, переводчиком с японского, web-программером который эти данные будет прикручивать на сайт...ну нужно в конце концов просто переветсти данные из закрытого формата в обычные таблицы реляционной БД....


 
Сергей М. ©   (2007-11-06 15:37) [13]


> нужно в конце концов просто переветсти данные из закрытого
> формата в обычные таблицы реляционной БД


Ну и переводи)
Что этому мешает ?
Исходный формат ты уже знаешь, значит можешь сформировать метаданные соответствующей таблицы в целевой БД.
А перенос данных в сформированную таблицу - дело плевое)


 
Shade   (2007-11-06 15:39) [14]


> Джо ©   (06.11.07 15:28) [11]
> > rec = record> r1:array[0..2] of char;> r2:array[0..10]
> of char;> ...> end;Так почему тогда не:rec = record  e:
> array [0..23] of Char;end;?Или это просто для примера?


это именно пример разобранной структуры которая хранится в файле...нужно эту структуру выгрузить в виде нормальной таблицы (в примере - с двумя полями r1 и r2)

вопрос именно как сделать "чтото универсальное " на вход которой подается любая определенная структура - на выходе получаем например обычную текстовую строку которая включает в себя все поля из этой структуры разделенный запятой...


 
Ega23 ©   (2007-11-06 15:47) [15]


> вопрос именно как сделать "чтото универсальное " на вход
> которой подается любая определенная структура - на выходе
> получаем например обычную текстовую строку которая включает
> в себя все поля из этой структуры разделенный запятой...
>


Никак.


 
Shade   (2007-11-06 15:49) [16]


> Сергей М. ©   (06.11.07 15:37) [13]
> > нужно в конце концов просто переветсти данные из закрытого
> > формата в обычные таблицы реляционной БДНу и переводи)
> Что этому мешает ?Исходный формат ты уже знаешь, значит
> можешь сформировать метаданные соответствующей таблицы в
> целевой БД.А перенос данных в сформированную таблицу - дело
> плевое)


ехх...всеравно не так поняли...
дело плевое - но очень муторное...
Таблица1.Field1:=Структура1.Field1
...
Таблица1.Field123:=Структура1.Field123
...
...
Таблица55.Field1:=Структура55.Field1
...
Таблица55.FieldN:=Структура55.FieldN

я почему и привел пример с классом - можно написать функцию которая примет любой класс и переберет все его свойства и значения свойств и запишет это все в тот же текстовый или xml файл....
вопрос был как сделать подобное с рекордом...


 
Сергей М. ©   (2007-11-06 15:50) [17]


> как сделать подобное с рекордом


Никак.


 
Shade   (2007-11-06 15:53) [18]


> Ega23 ©   (06.11.07 15:47) [15]
> > вопрос именно как сделать "чтото универсальное " на вход
> > которой подается любая определенная структура - на выходе
> > получаем например обычную текстовую строку которая включает
> > в себя все поля из этой структуры разделенный запятой.
> ..> Никак.


Вот и я ничего не придумал...но посчитал что окончательно отупел и растелял все логическое мышление =)


 
Shade   (2007-11-06 16:11) [19]

ыыы! Люди! спасибо за помощь! стоило только мысли оформить в тексте и появилась идея(насколько умная пока еще не понял) как это реализовать..! пойду обмозговывать...



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.038 c
2-1194362965
Новичок
2007-11-06 18:29
2007.12.02
Передача данных из Парадокса в Интербейз


15-1193824197
Jeer
2007-10-31 12:49
2007.12.02
Утилиты, макросы


6-1175189724
проходивший мимо
2007-03-29 21:35
2007.12.02
передать файлы через сеть


2-1194519342
allucard
2007-11-08 13:55
2007.12.02
Работа с массивом


15-1193533419
ВАК
2007-10-28 04:03
2007.12.02
тз





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