0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
1

Чтение с .bin

09.07.2013, 16:21. Показов 5295. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане!

Стоит задача расшифровать содержимое bin файла.

Файл содержит следующие строки:

"010064000100B500 34001E0006001200 17008403E8034C04 B0041E0064000100
8403FC036504BF04 1E0000000200C800 0200B50034001E00 060012001700DE00
3408480D540B0400 C800020000003408 5C0D400B26000000"

Соответственно делим по 4ре символа и получается:

"0100 6400 0100 B500 3400 1E00 0600 1200 1700 8403 E803 4C04 B004 1E00 6400 0100
8403 FC03 6504 BF04 1E00 0000 0200 C800 0200 B500 3400 1E00 0600 1200 1700 DE00
3408 480D 540B 0400 C800 0200 0000 3408 5C0D 400B 2600 0000"

Здесь две строки данных разделённые "0000".

Беда в том, что эти записи перевёрнуты. Например вместо первых трёх элементов должно быть 0001, 0064, 0001 и т.д.

Соответственно после правильной перестановки битов необходимо перевести в десятичный вид (где 0001=1, 0064=100,0001=1 и т.д.) и загнать например в Memo каждое число в новую строку.

Дык вот подскажите пожалуйста как лучше это сделать... Укажите так сказать направление...

На данный момент у меня в принципе получилось загнать содержимое сего файла в мемо, но в виде цельной строки, которую ещё нужно разбивать по 4ре символа, а потом ещё и менять местами первые и последние два символа местами. В общим геморой...


Вот код копирования в Memo:

Delphi
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
procedure TForm2.Button1Click(Sender: TObject);
var
  F : File;
  Arr : array of Byte;
  S, a, STmp : String;
  i, k, j, Size : Integer;
  Od : TOpenDialog;
begin
  Od := OpenDialog1;
  if Od.InitialDir = '' then Od.InitialDir := ExtractFilePath( Application.ExeName );
  if not Od.Execute then Exit;
  end;
 
  AssignFile(F, Od.FileName);
 
  Reset(F, 2);
  Size := FileSize(F);
  SetLength(Arr, Size);
 
  BlockRead(F, Arr[0], Size);
  CloseFile(F);
 
 
  SetLength(S, Size * 2);
  j := 1;
  for i := 0 to High(Arr) do begin
    STmp := IntToHex(Arr[i], 2);
    S[j] := STmp[1];
    S[j + 1] := STmp[2];
 
    Inc(j, 2);
  end;
 
  Memo1.Text := S;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2013, 16:21
Ответы с готовыми решениями:

Преобразование string в Bin и обратно. Русский текст. Пр.облема при Bin=>Str
Доброго времени суток! Пишу клиент-серверное приложение. Есть смысл кодировать информацию в...

Не могу установить ни одну программу /bin/sh: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or
Добрый день. Устанавливал на VDS сервер (CentOS) firstvds python. Оказалось там стоял уже python...

Чтение и запись в файл .bin (MFC)
Использую стандартные диалоги, но при сохранение файла .bin он весит 4 бита, то бишь там пусто и...

bin-файлы: открытие, чтение, обработка
Здравствуйте, подскажите, пожалуйста, команды, с помощью которых файлы с расширением bin можно не...

11
Заблокирован
09.07.2013, 22:07 2
А при чём тут WinAPI?

Что, уже байты в WORDе не можешь поменять? Ну "программисты"... Писал бы хоть в форум новичков. А если б там была Big/Little-Endian архитектура в принципе...

http://guildalfa.ru/alsha/node/9

Ну и IntToHex или прямо замена в строке символов - это основы Pascal вообще, даже не Delphi...
0
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
10.07.2013, 09:54  [ТС] 3
Цитата Сообщение от Dr_Quake Посмотреть сообщение
А при чём тут WinAPI?

Что, уже байты в WORDе не можешь поменять? Ну "программисты"... Писал бы хоть в форум новичков. А если б там была Big/Little-Endian архитектура в принципе...

http://guildalfa.ru/alsha/node/9

Ну и IntToHex или прямо замена в строке символов - это основы Pascal вообще, даже не Delphi...
WinAPI не причём, просто просматривал темы в этом разделе и тут же нажал кнопку создать тему.... Но модераторы молодцы... Сделали своё дело...

С WORD работал последний раз лет эдак 5 назад... И сейчас что либо вспомнить сложновато.... Так, в общих чертах...
По поводу "Ну "программисты"".... Знаете, если бы я хотел поговорить о "дырах" в своих познаниях, я бы наверное обратился к психологу... А сюда я зашёл получить конкретную помощь... Даже я бы сказал не помощь, а совет как енто дело будет удобней и грамотней оформить...

За ссылку конечно спасибо!

Не IntToHex, а HexToInt нужно преобразовать... Да и проблем в этом нет.... За 5мин набросал функцию преобразования и всё готово.

Ещё раз повторюсь... Мне нужен лишь совет, как лучше оформить такое преобразование с файла .bin в конечный результат. Ибо путь, которым иду я, мне кажется не совсем корректным...
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.07.2013, 15:15 4
Здесь надо поточнее разобраться какие данные имеются в файле и к какому виду их надо привести.
Цитата Сообщение от znoi_237 Посмотреть сообщение
Файл содержит следующие строки:
"010064000100B500 34001E0006001200 17008403E8034C04 B0041E0064000100
8403FC036504BF04 1E0000000200C800 0200B50034001E00 060012001700DE00
3408480D540B0400 C800020000003408 5C0D400B26000000"
В файле, как я понял, записан перечень из 4-ёхбайтных слов.
- Если эти слова записаны по правилу Little-Endian (сначала младшие байты - далее старшие), то преобразовывать ничего не надо. В этом случае данные уже представлены в том формате, который используется при расположении в памяти компьютера данных типа Longword (DWord) или Integer (если используется разряд со знаком). Достаточно считывать данные в переменные соответствующего типа - в массив таких переменных, например: array of Longword.
- Если данные представлены в формате Big-Endian (сначала старшие байты - далее младшие), тогда понадобится переставлять байты в обратном порядке. В этом случае, после перестановки байт, первые 3 элемента будут выглядеть так: 0010 0046 0010.

Переставлять байты можно разными способами. Но сначала надо уточнить те вопросы, которые я выше описал.
0
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
10.07.2013, 15:47  [ТС] 5
Цитата Сообщение от Mawrat Посмотреть сообщение
Здесь надо поточнее разобраться какие данные имеются в файле и к какому виду их надо привести.

В файле, как я понял, записан перечень из 4-ёхбайтных слов.
- Если эти слова записаны по правилу Little-Endian (сначала младшие байты - далее старшие), то преобразовывать ничего не надо. В этом случае данные уже представлены в том формате, который используется при расположении в памяти компьютера данных типа Longword (DWord) или Integer (если используется разряд со знаком). Достаточно считывать данные в переменные соответствующего типа - в массив таких переменных, например: array of Longword.
- Если данные представлены в формате Big-Endian (сначала старшие байты - далее младшие), тогда понадобится переставлять байты в обратном порядке. В этом случае, после перестановки байт, первые 3 элемента будут выглядеть так: 0010 0046 0010.

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

Сначала идут старшие байты, затем младшие. В принципе на данный момент я решил задачу с преобразованием данных путём разбивки текста на 4х байтные слова, затем меняю в каждом слове первые 2 и последние 2 символа местами, далее перевожу из hex в dec. НО я не учёл одного нюанса:

0100 6400 0100 B500 3400 1E00 0600 1200 1700 8403 E803 4C04 B004 1E00 6400 0100
8403 FC03 6504 BF04 1E00 0000 0200 C800 0200 B500 3400 1E00 0600 1200 1700 DE00
3408 480D 540B 0400 C800 0200 0000 3408 5C0D 400B 2600 0000

Это слово - промежуточное - служит для разделения записей... НО, если в списке значений есть ноль, то он тоже будет выглядеть как '0000'... Каждая запись состоит из 21 word'a или из 84х символов, затем идёт разделитель в виде '0000' или '0' в десятичном виде.... Дык вот сейчас необходимо разделять по записям в 21 слово... А как пока не придумал... В итоге эти записи по 21 слову буду загонять в БД. Но эт уже элементарно...

Добавлено через 8 минут
Цитата Сообщение от Mawrat Посмотреть сообщение
В этом случае, после перестановки байт, первые 3 элемента будут выглядеть так: 0010 0046 0010.
Неа, они должны выглядеть 0001 0064 0001.

Ибо первая строка значений в исходном виде выглядит так:

1
100
1
181
52
30
6
18
23
900
1000
1100
1200
30
100
1
900
1020
1125
1215
30
0
Заблокирован
10.07.2013, 17:11 6
Mawrat, до меня поздно дошло что они у него УЖЕ текст - тут ничего по сути не нужно кроме операций со строками, конвертить обратно из hex строки, менять и конвертить опять - да ну нафиг...
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.07.2013, 17:35 7
Ясно. Здесь переставлять байты не надо. Все данные уже в нужном формате. Я в прежнем посте ошибся, написав про типы Longword, DWord, Integer. Здесь тип - Word.
Т. е., в файле все данные представлены в формате LE (Little-Endian). Достаточно просто читать эти данные в элементы массива типа array of Word.
Я написал код, который наглядно показывает, как число типа Word, записанное в десятичной системе счисления, по байтам представляется по правилу Little-Endian и Big-Endian. Little-Endian - по этому формату целочисленные значения представляются в памяти компьютера. Т. е., в младших адресах располагаются младшие байты числа, в старших адресах - старшие байты числа. С помощью этой программы можно проверить элементы файла. Там видно, что все данные уже представлены в формате Word - т. е., по правилу Little-Endian.
Delphi
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
procedure TForm1.Button1Click(Sender: TObject);
type
  //Исследуемый тип.
  TData = Word;
 
  TRec = packed record
    case Byte of
      0 : (D : TData;);
      1 : (Arr : array[1..SizeOf(TData)] of Byte;);
  end;
var
  Rec : TRec;
  i : Integer;
  SLe, SBe : String;
begin
  Rec.D := StrToInt(Edit1.Text);
 
  Edit2.Text := IntToHex(Rec.D, SizeOf(TData) * 2);
  //Значения байт в направлении от младших адресов - к старшим.
  SLe := ''; //Little-Endian.
  SBe := ''; //Big-Endian.
  for i := 1 to High(Rec.Arr) do begin
    SLe := SLe + IntToHex(Rec.Arr[i], 2);
    SBe := IntToHex(Rec.Arr[i], 2) + SBe;
  end;
  Edit3.Text := SLe;
  Edit4.Text := SBe;
end;
Вложения
Тип файла: rar DecToHex,Little-Endian,Big-Endian-01.rar (165.2 Кб, 26 просмотров)
1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.07.2013, 19:03 8
А, ну вот, Dr_Quake уже ответил. Я страницу не обновлял, пока писал код.
Цитата Сообщение от Dr_Quake Посмотреть сообщение
Mawrat, до меня поздно дошло что они у него УЖЕ текст - тут ничего по сути не нужно кроме операций со строками, конвертить обратно из hex строки, менять и конвертить опять - да ну нафиг...
Добавлено через 3 минуты
Только лучше не со строками здесь действовать, а прямо читать из файла в переменные типа Word - потому что данные уже в подходящем формате.

Добавлено через 47 секунд
Переменные типа Word - т. е., читать в массив элементов типа Word.

Добавлено через 8 минут
znoi_237, сейчас пример напишу, как удобнее читать из файла.
---
Код чтения данных из файла в двумерный массив и распечатка в Мемо.
Распечатка в Мемо - это только для проверки. Чтобы не было тормозов при работе с Мемо, количество строк в тестовом файле желательно делать не более 300.
Delphi
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
type
  TData = Word;
  TArr = array[1..22] of TData;
  TListArr = array of TArr;
 
//Чтение данных из файла в массив типа TListArr.
function ReadBinData(const aFileName : String) : TListArr;
var
  F : File;
  Size : Integer;
begin
  Result := nil;
  AssignFile(F, aFileName);
  Reset(F, SizeOf(TArr));
  Size := FileSize(F);
  SetLength(Result, Size);
  try
    BlockRead(F, Result[0], Size);
  finally
    CloseFile(F);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  LArr : TListArr;
  i, j : Integer;
  S : String;
  Od : TOpenDialog;
begin
  Od := OpenDialog1; //OpenDialog1 уже должен быть на форме.
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath( ParamStr(0) );
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then begin
    MessageBox(0, 'Файл с заданным именем не найден. Действие отменено.'
      ,'Файл не найден', MB_OK + MB_ICONEXCLAMATION + MB_APPLMODAL);
    Exit;
  end;
 
  //Загружаем данные из файла с двумерный массив.
  LArr := ReadBinData(Od.FileName);
  //Распечатываем данные в Мемо.
  Memo1.Clear;
  for i := 0 to High(LArr) do begin
    S := '';
    for j := 1 to High(LArr[i]) do begin
      if j > 1 then S := S + #9;
      S := S + IntToHex(LArr[i, j], SizeOf(TData) * 2);
    end;
    Memo1.Lines.Add(S);
  end;
end;
Проверочные данные в файл я записал таким образом:
Delphi
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
procedure WriteBinData(const aFileName : String);
const
  Size = 100; //Количество строк.
var
  F : File;
  Arr : TListArr;
  i, j, k : Integer;
begin
  SetLength(Arr, Size);
  k := 0;
  for i := 0 to High(Arr) do begin
    for j := 1 to High(Arr[i]) - 1 do begin
      Inc(k);
      Arr[i, j] := k;
    end;
    Arr[i, High(Arr[i])] := 0;
  end;
  AssignFile(F, aFileName);
  Rewrite(F, SizeOf(TArr));
  try
    BlockWrite(F, Arr[0], Size);
  finally
    CloseFile(F);
  end;
end;
Приложил архив с проектом.
Полный код проекта:
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
type
  TData = Word;
  TArr = array[1..22] of TData;
  TListArr = array of TArr;
 
//Запись проверочных данных в файл.
procedure WriteBinData(const aFileName : String);
const
  Size = 100; //Количество строк.
var
  F : File;
  Arr : TListArr;
  i, j, k : Integer;
begin
  SetLength(Arr, Size);
  k := 0;
  for i := 0 to High(Arr) do begin
    for j := 1 to High(Arr[i]) - 1 do begin
      Inc(k);
      Arr[i, j] := k;
    end;
    Arr[i, High(Arr[i])] := 0;
  end;
  AssignFile(F, aFileName);
  Rewrite(F, SizeOf(TArr));
  try
    BlockWrite(F, Arr[0], Size);
  finally
    CloseFile(F);
  end;
end;
 
//Чтение данных из файла в массив типа TListArr.
function ReadBinData(const aFileName : String) : TListArr;
var
  F : File;
  Size : Integer;
begin
  Result := nil;
  AssignFile(F, aFileName);
  Reset(F, SizeOf(TArr));
  Size := FileSize(F);
  SetLength(Result, Size);
  try
    BlockRead(F, Result[0], Size);
  finally
    CloseFile(F);
  end;
end;
 
//Чтение из файла и распечатка в Мемо.
procedure TForm1.Button1Click(Sender: TObject);
var
  LArr : TListArr;
  i, j : Integer;
  S : String;
  Od : TOpenDialog;
begin
  Od := OpenDialog1; //OpenDialog1 уже должен быть на форме.
  if Od.InitialDir = '' then
    Od.InitialDir := ExtractFilePath( ParamStr(0) );
  if not Od.Execute then Exit;
  if not FileExists(Od.FileName) then begin
    MessageBox(0, 'Файл с заданным именем не найден. Действие отменено.'
      ,'Файл не найден', MB_OK + MB_ICONEXCLAMATION + MB_APPLMODAL);
    Exit;
  end;
 
  //Загружаем данные из файла с двумерный массив.
  LArr := ReadBinData(Od.FileName);
  //Распечатываем данные в Мемо.
  Memo1.Clear;
  for i := 0 to High(LArr) do begin
    S := '';
    for j := 1 to High(LArr[i]) do begin
      if j > 1 then S := S + #9;
      S := S + IntToHex(LArr[i, j], SizeOf(TData) * 2);
    end;
    Memo1.Lines.Add(S);
  end;
end;
 
//Запись проверочных данных.
procedure TForm1.Button2Click(Sender: TObject);
var
  Res : Integer;
  Sd : TSaveDialog;
begin
  Sd := SaveDialog1; //SaveDialog1 уже должен быть на форме.
  if Sd.InitialDir = '' then
    Sd.InitialDir := ExtractFilePath( ParamStr(0) );
  if not Sd.Execute then Exit;
  if FileExists(Sd.FileName) then begin
    Res := MessageBox(0, 'Файл с заданным именем уже существует. Перезаписать?'
      ,'Перезаписать?', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
    if Res = IDNO then Exit;
  end;
 
  WriteBinData(Sd.FileName);
end;
 
end.
Вложения
Тип файла: rar WorkWithBinFile-01.rar (171.0 Кб, 39 просмотров)
1
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
11.07.2013, 13:06  [ТС] 9
Mawrat, ВОУ! Спасибо БООЛЬШОЕ за такой подробный ответ! Извиняюсь за наглость, но я не сторонник халявы)))) Можно ссылочку на литературку??? Дабы больше не беспокоить форумчан по такими вопросами...

Добавлено через 54 минуты
Я имею ввиду литературку по теме взаимодействия с Word b и его форматами представления... В принципе я вчера решил вопрос по поводу преобразования и разбивки по 21 значению. Тоже использовал двухмерный массив. Но работал с текстом, а не с WORD.

Добавлено через 9 минут
Хммм.... Я вот думаю... А если необходимо будет в бинарник помимо числовых закидывать текст в ASCII символах, то по идее проблем с преобразованием быть не должно???
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
11.07.2013, 14:18 10
Цитата Сообщение от znoi_237 Посмотреть сообщение
Можно ссылочку на литературку??? Дабы больше не беспокоить форумчан по такими вопросами...
Можно и на форуме спрашивать - на то и форум. Такие материалы можно найти там, где обсуждается формат внутреннего представления данных в ПК. В общем, здесь так - в компьютерах, совместимых с архитектурой x86, для целочисленных значений принято правило LE (Little-Endian). Если число записать обычным образом в двоичной или шестнадцатиричной системе счисления, то мы получим BE (Big-Endian) - старшие байты окажутся слева, младшие - справа. Если теперь эти байты переставить в обратном порядке, то получим LE. - Слева будут младшие байты, справа - старшие. Вот в таком виде целые числа и располагаются в памяти ПК - в младших адресах "слева" располагаются младшие байты числа, в старших адресах "справа" - старшие байты числа. Это правило касается также кодов символов. Например, если взять символы в кодировке двухбайтного уникода - UTF-16, то в памяти коды этих символов располагаются по правилу LE. В этом случае кодировку так и обозначают: UTF-16LE. В файлах двухбайтные символы уникода чаще всего пишутся по такому же правилу - UTF-16LE. Но могут быть тексты и в кодировке UTF-16BE. Иногда в самое начало файла с текстом UTF-16 добавляют 2 байта, которые является флагом и этот флаг показывает, какое следует применять правило для декодирования - LE или BE. Если значение этого флага = $FEFF, то значит используется правило LE, если значение флага = $FFFE, значит - правило BE. Но чаще всего флаг в начало файла не добавляется и используется правило LE.
Для проверки, как выглядит число в LE или BE можно использовать тот код, который я в 7-ом посте представил.
Цитата Сообщение от znoi_237 Посмотреть сообщение
Хммм.... Я вот думаю... А если необходимо будет в бинарник помимо числовых закидывать текст в ASCII символах, то по идее проблем с преобразованием быть не должно???
Если в файл понадобится записывать разнородные данные, то здесь можно использовать такую структуру файла. Файл может состоять из блоков такого формата:
Код
<тип_данных_в_блоке : String[10]><размер_блока_в_байтах : Integer><данные_блока : array[1..размер_блока] of Byte>
1
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 20
11.07.2013, 14:34  [ТС] 11
Mawrat, Спасибо БОЛЬШОЕ! Будем знать...)))

Цитата Сообщение от Mawrat Посмотреть сообщение
Можно и на форуме спрашивать - на то и форум.
Так то оно так, просто иногда обидно когда некоторые новичком обзывают... И лишний раз самому проще разобраться и сделать в 10 раз сложнее из-за незнания некоторых аспектов... Дабы за частую вместо помощи пишут фразы типа: "Почитай книжечку, потом садись программировать"...
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
11.07.2013, 14:53 12
Цитата Сообщение от znoi_237 Посмотреть сообщение
Так то оно так, просто иногда обидно когда некоторые новичком обзывают...
Ну это да, бывает. В заблуждение могут ввести числа из статистики - что раз сообщений на форуме мало, то значит - "новичок".
0
11.07.2013, 14:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2013, 14:53
Помогаю со студенческими работами здесь

Запись/чтение из бинарного файла (.bin)
Беру информацию из текстового файла, записываю в двоичный и вывожу информацию на экран уже из...

Чтение названия папок в $RECYCLE.BIN
Собственно сам вопрос в названии темы. Как прочитать название папок которые находятся в...

Побайтное чтение *.bin файла и представление информации в 16-ом виде.
Привет всем! Кто может подсказать, как из файла прочитать байт и представить его в 16-ом виде? В...

Eclipse: Failed to load the JNI shared library "C:\Java\jdk1.7.0_21\bin\.\jre\bin\client\jvm.dll"
При запуске Eclipse выдает: Failed to load the JNI shared library...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru