Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825

TinyDb 2.0 из Delphi в C#

07.04.2019, 18:04. Показов 4531. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть софтина , которая пишет логи в tdb с использованием библиотеки tinydb 2.0. Стоит задача прочитать этот файл на языке C# . Мог бы кто-нибудь из дельфистов помочь в этом? Или написать код для этого или хотя бы рассказать как работает эта блиблилтека и как она пишет данные в свою базу (локальную), чтобы я смог воспроизвести чтение сам

Добавлено через 1 минуту
Возможно ещё помочь со вторым вопросом из этой темы: Открыть и разобрать эти файлы
Скорее всего весь софт, который создаёт эти файлы написан на Delphi , в котором я вообще не Але
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2019, 18:04
Ответы с готовыми решениями:

Что лучше брать Delphi XE2, Delphi XE, Delphi 7?
Привет форумчане! У меня вопрос: что лучше брать Delphi XE2, Delphi XE, Delphi 7? Как вообще различаются серия Delphi XE, и Delphi 7?

Какие отличия Delphi 5, Delphi 6 и Delphi 7
Кто-нибудь юзал Delphi 6? Если да, то напишите, плиз, его отличия от 5-ой версии (плюсы и минусы) Кстати, никто не слышал ничего о Delphi...

ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007
Народ!!! Помоготи!!! Установил компонент ZipForge для Delphi Xe и после этого интерфейс моей программы стал таким, как будто я его в delphi...

24
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
09.04.2019, 15:03  [ТС]
Студворк — интернет-сервис помощи студентам
murderer, и текст в конце не разбирается до конца верно. Почему-то проблема с кодировкой возникает
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
09.04.2019, 15:04
Как в этом вообще можно разобраться
https://doc.kaitai.io/user_guide.html
0
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
09.04.2019, 15:10  [ТС]
murderer, там еще проблема может быть в том, что в таблице на скриншоте и в таблице по файту заголовки таблицы в разных порядках записаны.
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
09.04.2019, 16:37
Лучший ответ Сообщение было отмечено MakcPletnev как решение

Решение

fttime - это 4 байта, а float`ы похоже выровнены по границе 8 байт.

Добавлено через 15 минут
float - это на самом деле double. Дата и время 4-байтовые, возможно преобразование даты в строку есть где-то в TinyDB.pas.
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
meta:
  id: tinydb
  file-extension: tdb
  endian: le
  encoding: windows-1251
seq:
  - id: fileheader
    type: tfileheader
  - id: textdatablock
    type: ttextdatablock
  - id: dboptions
    type: tdboptions
  - id: tabletab
    type: ttabletab
  - id: tables
    type: ttableheader(tabletab.tableheaderoffset[_index])
    repeat: expr
    repeat-expr: tabletab.tablecount
types:
  tfileheader:
    seq:
    - id: softname
      size: 7
      type: str
    - id: filefmtver
      size: 5
      type: str
  ttextdatablock:
    seq:
    - id: comments
      size: 257
      type: str
    - id: data
      size: 2048
      type: str
  tdboptions:
    seq:
    - id: compressblob
      type: u1
      enum: bool
    - id: compresslevel
      type: u1
      enum: tcompresslevel
    - id: compressalgoname
      size: 33
      type: str
    - id: encrypt
      type: u1
      enum: bool
    - id: encryptmode
      type: u1
      enum: tencryptmode    
    - id: encryptalgoname
      size: 33
      type: str
    - id: crc32
      type: u1
      enum: bool
    - id: randombuffer
      size: 256
    - id: hashpassword
      size: 129
    - id: reserved
      size: 16
  ttabletab:
    seq:
    - id:   tablecount
      type: s4
    - id:   reserved
      type: s4
    - id:   tableheaderoffset
      type: s4
      repeat: expr
      repeat-expr: 256
  ttableheader2:
    seq:
    - id: tablename
      size: 33
      type: str
    - id: rectaboffset
      type: s4
    - id: recordtotal
      type: s4
    - id: autoinccounter
      type: s4
    - id: fieldcount
      type: s4
    - id: fieldtab
      type: tfieldtabitem
      repeat: expr
      repeat-expr: 96
    - id: indexcount
      type: s4
    - id: indexheader
      type: tindexheader
      repeat: expr
      repeat-expr: 8
    - id: reserved
      size: 16
    instances:
      rectable:
        pos: rectaboffset
        type: trecordblock(recordtotal)
  tindexheader:
    seq:
    - id: indexname
      size: 33
      type: str
    - id: indexoptions
      size: 32
    - id: fieldidx
      type: s4
      repeat: expr
      repeat-expr: 8
    - id: indexoffset
      type: s4
    - id: startindex
      type: s4
    - id: reserved
      type: s4
  trecordtabitem:
    seq:
    - id: dataoffset
      type: s4
    - id: deleteflag
      type: u1
      enum: bool
    instances:
      fileds:
        pos: dataoffset
        type:
          switch-on: _parent._parent.fieldtab[_index].fieldtype
          cases:
            tfieldtype::ftstring: tstring(_parent._parent.fieldtab[_index].fieldsize+1)
            tfieldtype::ftsmallint: u2
            tfieldtype::ftdate: s4
            tfieldtype::fttime: s4
            tfieldtype::ftfloat: f8
            tfieldtype::ftinteger: s4
        repeat: expr
        repeat-expr: _parent._parent.fieldcount
  tstring:
    params:
    - id: length
      type: s4
    seq:
    - id: text
      type: strz
      size: length
  trecordblock:
    params:
    - id: n
      type: s4
    seq:
    - id: nextblock
      type: s4
    - id: table
      type: trecordtabitem
      repeat: expr
      repeat-expr: n
  ttableheader:
    params:
      - id: offset
        type: s4
    instances:
      tableheader:
        pos: offset
        type: ttableheader2      
  tfieldtabitem:
    seq:
    - id: fieldname
      size: 33
      type: str
    - id: fieldtype
      type: u1
      enum: tfieldtype
    - id: fieldsize
      type: s4
    - id: dpmode
      type: u1
      enum: tfielddataprocessmode
    - id: reserved
      type: s4
enums:
  bool:
    0: false
    1: true
  tcompresslevel:
    0: clmaximum
    1: clnormal
    2: clfast
    3: clsuperfast
  tencryptmode:
    0: emcts
    1: emcbc
    2: emcfb
    3: emofb
    4: emecb
  tfieldtype:
    0:  ftunknown
    1:  ftstring
    2:  ftsmallint
    3:  ftinteger
    4:  ftword
    5:  ftboolean
    6:  ftfloat
    7:  ftcurrency
    8:  ftbcd
    9:  ftdate
    10: fttime
    11: ftdatetime
    12: ftbytes
    13: ftvarbytes
    14: ftautoinc
    15: ftblob
    16: ftmemo
    17: ftgraphic
    18: ftfmtmemo
    19: ftparadoxole
    20: ftdbaseole
    21: fttypedbinary
    22: ftcursor
    23: ftfixedchar
    24: ftwidestring
    25: ftlargeint
    26: ftadt
    27: ftarray
    28: ftreference
    29: ftdataset
    30: ftorablob
    31: ftoraclob
    32: ftvariant
    33: ftinterface
    34: ftidispatch
    35: ftguid
    36: fttimestamp
    37: ftfmtbcd
    38: ftfixedwidechar
    39: ftwidememo
    40: ftoratimestamp
    41: ftorainterval
    42: ftlongword
    43: ftshortint
    44: ftbyte
    45: ftextended
    46: ftconnection
    47: ftparams
    48: ftstream
  tfielddataprocessmode:
    0: fddefault
    1: fdoriginal


Добавлено через 8 минут
Дата и время хранятся в виде TTimeStamp

Добавлено через 43 минуты
Добавил конвертацию времени в часы, минуты, секунды
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
meta:
  id: tinydb
  file-extension: tdb
  endian: le
  encoding: windows-1251
seq:
  - id: fileheader
    type: tfileheader
  - id: textdatablock
    type: ttextdatablock
  - id: dboptions
    type: tdboptions
  - id: tabletab
    type: ttabletab
  - id: tables
    type: ttableheader(tabletab.tableheaderoffset[_index])
    repeat: expr
    repeat-expr: tabletab.tablecount
types:
  tfileheader:
    seq:
    - id: softname
      size: 7
      type: str
    - id: filefmtver
      size: 5
      type: str
  ttextdatablock:
    seq:
    - id: comments
      size: 257
      type: str
    - id: data
      size: 2048
      type: str
  tdboptions:
    seq:
    - id: compressblob
      type: u1
      enum: bool
    - id: compresslevel
      type: u1
      enum: tcompresslevel
    - id: compressalgoname
      size: 33
      type: str
    - id: encrypt
      type: u1
      enum: bool
    - id: encryptmode
      type: u1
      enum: tencryptmode    
    - id: encryptalgoname
      size: 33
      type: str
    - id: crc32
      type: u1
      enum: bool
    - id: randombuffer
      size: 256
    - id: hashpassword
      size: 129
    - id: reserved
      size: 16
  ttabletab:
    seq:
    - id:   tablecount
      type: s4
    - id:   reserved
      type: s4
    - id:   tableheaderoffset
      type: s4
      repeat: expr
      repeat-expr: 256
  ttableheader2:
    seq:
    - id: tablename
      size: 33
      type: str
    - id: rectaboffset
      type: s4
    - id: recordtotal
      type: s4
    - id: autoinccounter
      type: s4
    - id: fieldcount
      type: s4
    - id: fieldtab
      type: tfieldtabitem
      repeat: expr
      repeat-expr: 96
    - id: indexcount
      type: s4
    - id: indexheader
      type: tindexheader
      repeat: expr
      repeat-expr: 8
    - id: reserved
      size: 16
    instances:
      rectable:
        pos: rectaboffset
        type: trecordblock(recordtotal)
  tindexheader:
    seq:
    - id: indexname
      size: 33
      type: str
    - id: indexoptions
      size: 32
    - id: fieldidx
      type: s4
      repeat: expr
      repeat-expr: 8
    - id: indexoffset
      type: s4
    - id: startindex
      type: s4
    - id: reserved
      type: s4
  trecordtabitem:
    seq:
    - id: dataoffset
      type: s4
    - id: deleteflag
      type: u1
      enum: bool
    instances:
      fileds:
        pos: dataoffset
        type:
          switch-on: _parent._parent.fieldtab[_index].fieldtype
          cases:
            tfieldtype::ftstring: tstring(_parent._parent.fieldtab[_index].fieldsize+1)
            tfieldtype::ftsmallint: u2
            tfieldtype::ftdate: ftdate
            tfieldtype::fttime: fttime
            tfieldtype::ftfloat: f8
            tfieldtype::ftinteger: s4
        repeat: expr
        repeat-expr: _parent._parent.fieldcount
  ftdate:
    seq:
    - id: datebin
      type: s4
  fttime:
    seq:
    - id: timebin
      type: s4
    instances:
      hours:
        value: timebin/3600000
      mins:
        value: (timebin-hours*3600000)/60000
      secs:
        value: (timebin-hours*3600000-mins*60000)/1000
  tstring:
    params:
    - id: length
      type: s4
    seq:
    - id: text
      type: strz
      size: length
  trecordblock:
    params:
    - id: n
      type: s4
    seq:
    - id: nextblock
      type: s4
    - id: table
      type: trecordtabitem
      repeat: expr
      repeat-expr: n
  ttableheader:
    params:
      - id: offset
        type: s4
    instances:
      tableheader:
        pos: offset
        type: ttableheader2      
  tfieldtabitem:
    seq:
    - id: fieldname
      size: 33
      type: str
    - id: fieldtype
      type: u1
      enum: tfieldtype
    - id: fieldsize
      type: s4
    - id: dpmode
      type: u1
      enum: tfielddataprocessmode
    - id: reserved
      type: s4
enums:
  bool:
    0: false
    1: true
  tcompresslevel:
    0: clmaximum
    1: clnormal
    2: clfast
    3: clsuperfast
  tencryptmode:
    0: emcts
    1: emcbc
    2: emcfb
    3: emofb
    4: emecb
  tfieldtype:
    0:  ftunknown
    1:  ftstring
    2:  ftsmallint
    3:  ftinteger
    4:  ftword
    5:  ftboolean
    6:  ftfloat
    7:  ftcurrency
    8:  ftbcd
    9:  ftdate
    10: fttime
    11: ftdatetime
    12: ftbytes
    13: ftvarbytes
    14: ftautoinc
    15: ftblob
    16: ftmemo
    17: ftgraphic
    18: ftfmtmemo
    19: ftparadoxole
    20: ftdbaseole
    21: fttypedbinary
    22: ftcursor
    23: ftfixedchar
    24: ftwidestring
    25: ftlargeint
    26: ftadt
    27: ftarray
    28: ftreference
    29: ftdataset
    30: ftorablob
    31: ftoraclob
    32: ftvariant
    33: ftinterface
    34: ftidispatch
    35: ftguid
    36: fttimestamp
    37: ftfmtbcd
    38: ftfixedwidechar
    39: ftwidememo
    40: ftoratimestamp
    41: ftorainterval
    42: ftlongword
    43: ftshortint
    44: ftbyte
    45: ftextended
    46: ftconnection
    47: ftparams
    48: ftstream
  tfielddataprocessmode:
    0: fddefault
    1: fdoriginal

С датой сложнее - там надо учитывать високосные годы
1
41 / 37 / 9
Регистрация: 01.02.2014
Сообщений: 825
09.04.2019, 19:58  [ТС]
murderer, Да, посмотрел) Спасибо вам огромное за проделанную работу, с виду вроде бы все так, напишу вам как только станет известно что к чему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2019, 19:58

Какова разница работы одного кода в Delphi 7 и в Delphi XE5?
Почему приложение состоящие из одинакового кода, но компилируемое в разных средах работает по разному? Есть клиент-серверное приложение,...

SQL-запрос в Delphi и в Access один и тот же, но в Delphi не работает
ри обращение к базе в Access я использую код: with ADOQueryMain do begin Active:=false; SQL.Clear; SQL.Add('SELECT Code,...

Переписать часть кода с Delphi на ассемблер (ассемблерные вставки в Delphi)
Добрый вечер. Нужно сделать ассемблерные вставки в программе. Первый раз столкнулся с таким заданием, в языке ассемблера почти ноль....

Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ??
Данный код работал нормально в D7: procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(Application.Handle, 0); end;...

Как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7?
Добрый вечер! Подскажите пожалуйста, как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7? Т.е. чтобы окна были прикрепленные, а не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru