Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
2-1194608983
DimOk
2007-11-09 14:49
2007.12.02
GetActiveOLEObject касательно v77.application


2-1194708408
anonymous
2007-11-10 18:26
2007.12.02
Как добавить все столбцы в TDBGrid Run-Time?


2-1194521051
Neo
2007-11-08 14:24
2007.12.02
проблема с регистрацией БД


2-1194626179
asd00
2007-11-09 19:36
2007.12.02
как с эмитировать нажатие правой/левой кнопки мыши?


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