Mismatch in datapacket валента ошибка

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, DB, DBClient, DBCtrls, Grids, DBGrids;
 
type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    ClientDataSet1: TClientDataSet;
    DataSource1: TDataSource;
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Image1: TImage;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  m,m1,m2: TMemoryStream;
  s1,s2:int64;
begin
if savedialog1.Execute then
begin
m:=TMemoryStream.Create;
m1:=TMemoryStream.Create;
m2:=TMemoryStream.Create;
 try
  clientdataset1.SaveToStream(m1);
  image1.Picture.Bitmap.SaveToStream(m2);
  s1:=m1.Size;
  s2:=m2.Size;
  m.Write(s1,sizeof(s1));
  m.Position:=sizeof(s1);
  m1.Position:=0;
  m.CopyFrom(m1,s1);
  m.Position:=m.Position+s1;
  m.Write(s2,sizeof(s2));
  m.Position:=m.Position+sizeof(s2);
  m2.Position:=0;
  m.CopyFrom(m2,s2);
m.Position:=0;
  m.SaveToFile(savedialog1.FileName);
 finally
  m.Free;
m1.Free;
m2.Free;
 end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  m,m1,m2:TMemoryStream;
  s1,s2:int64;
begin
if opendialog1.Execute then
begin
 m:=TMemoryStream.Create;
 m1:=TMemoryStream.Create;
 m2:=TMemoryStream.Create;
 try
  m.LoadFromFile(opendialog1.FileName);
  clientdataset1.Active:=true;
  m.Position:=0;
  m.Read(s1,sizeof(s1));
m.Position:=sizeof(s1);
  m1.CopyFrom(m,s1);
  m1.Position:=0;
  clientdataset1.LoadFromStream(m1);
m.Position:=m.Position+s1;
  m.Read(s2,sizeof(s2));
m.Position:=m.Position+sizeof(s2);
  m2.CopyFrom(m,s2);
  m2.Position:=0;
  image1.Picture.Bitmap.LoadFromStream(m2);
 finally
  m.Free;
  m1.Free;
  m2.Free;
 end;
 end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if opendialog1.Execute then
begin
  image1.Picture.LoadFromFile(opendialog1.FileName);
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
clientdataset1.FileName:='';
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
clientdataset1.First;
while not clientdataset1.Eof do
clientdataset1.Delete;
image1.Picture.Bitmap.LoadFromFile('2.bmp');
end;
 
end.
  •  
  • delphi

  • delphi-7

  • tclientdataset

  •  12-12-2019
  •  | 

  •  

Question

I have a .cds file that suggest it is TClientDataSet file. When I try to open it whit TClientDataSet in Delphi 7, when set Active to true, error «Mismatch in datapacket» has occurred. Please help me :(

No correct solution

OTHER TIPS

I just downloaded that file and can confirm that it definitely isn’t valid CDS file

use the xml mapper tool if you have one and after mapping select all and then from the Create mrnu, DataPacket from XML

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.


Форум программистов Vingrad

Новости ·
Фриланс ·
FAQ

Правила ·
Помощь ·
Рейтинг ·
Избранное ·
Поиск ·
Участники

Форум -> Программирование -> C++ -> C/C++: Базы данных
(еще)

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Mismatch in datapacket, :wizard  

:(

   

Опции темы

Progis
Дата 22.9.2008, 10:31 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Новичок

Профиль
Группа: Участник
Сообщений: 21
Регистрация: 15.7.2008

Репутация: нет
Всего: нет

У меня такой вопрос, ставлю на форму ClientDataSet  делаю его активным, применяю метод ApplyUpdates. Выдается ошибка  Mismatch in datapacket..затем применяю снова («ClientDataSet->ApplyUpdates(0) висит на кнопке «) Данные заносятся нормально ..  smile Вообще чем может вызвана такая ошибка?

PM MAIL   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «C++: Базы данных»
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »

Подписаться на тему |
Подписка на этот форум |
Скачать/Распечатать тему

[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]

Реклама на сайте
   
Информационное спонсорство

#delphi #datasnap #delphi-10.3-rio

#delphi #datasnap #delphi-10.3-rio

Вопрос:

Я на Delphi 10.3. Я часто использую TClientDataSet в своих приложениях как способ локального хранения небольшого объема информации, обычно менее 10000 строк.

В основном я создаю структуру таблицы и сохраняю ее на диске :

 myClientDataSet.savetofile('c:mydata.dat') ;
  

Это отличный способ иметь механизм сохранения без необходимости установки какой-либо базы данных. Это работает, но я заметил, что в какой-то момент я больше не могу открыть файл, потому что при попытке загрузить :

 myClientDataSet.loadfromfile('c:mydata.dat');
  

Я получу эту ошибку :

 Mismatch in datapacket.
  

Насколько я знаю, когда это происходит, единственное исправление — удалить файл и создать новый, потеряв все данные (или восстановив резервную копию, если она существует). В некоторых случаях для возникновения этой проблемы потребуются годы, но она всегда возникает в какой-то момент.

Что я могу сделать, чтобы избежать этой проблемы, и если это уже произошло, есть ли способ восстановить файл данных с этой ошибкой?

Спасибо

Комментарии:

1. «есть ли способ восстановить данные» Откройте файл с помощью текстового редактора, чтобы посмотреть, что в нем.

2. Возникает ли ошибка также после перезагрузки? Я прошу выделить две возможные причины: файл открыт чем-то другим или содержимое файла повреждено. Другой вопрос: возникает ли ошибка после обновления файла?

3. @Olivier Это двоичный файл, ничего не видно.

4. «могу ли я что-нибудь сделать для восстановления (даже частичного) его данных» Никто не знает, что случилось с вашим файлом, поэтому мы не можем ответить на этот вопрос. Вместо этого вы могли бы попробовать использовать формат XML (я забыл, что формат по умолчанию был двоичным). Он более подробный, но в случае повреждения гораздо проще увидеть, что произошло, и восстановить некоторые данные.

5. Вы также можете сохранить резервную копию (например, mydata.bak). Если файл mydata.dat поврежден и не может быть загружен, вы можете предупредить пользователя и вместо этого загрузить резервную копию.

  • Mise 605 indesit коды ошибок
  • Mirrors edge ошибка при запуске приложения 0xc0000906
  • Mirrors edge ошибка application load error 5 0000065434
  • Mirrors edge ошибка 0xc000007b
  • Mirrors edge exe ошибка