Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как обработать полученные данные и вывести их в Label [D7]


Семён ©   (2014-01-28 22:18:00) 

Проблема в следующем: написал программку, для считывания данных из бинарного файла, данные успешно считываются, но так как данных в одной ячейки могут быть несколько, а определённому значению соответствует определённая деталь, то надо от полученных данных(какой на данный момент находится в файле) преобразовать в деталь и вывести в Label.
Пример: считанные данные №1  $2421 = ' Dvigatel-s' ; № 2 $2С29= ' forsynca-F';, №3 $ A0AD=' не определённая деталь';
Вобщем ни как не могу построить условие, чтоб при сверки считанных данных в Label выводились не числа а слова( название детали).
Программа в Дельфи7 написана, на ней и пишу.

вод код по которому считываю данные по определённому адрессу в файле:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var Stream: TFileStream;
a: array [0..1023] of Byte;

begin

if OpenDialog1  Execute then
begin
Stream.Position:=$1F0;
stream.Read(a,2);
Label41.Caption:=IntToHex(a[0],2)+IntToHex(a[1],2);
end;
Stream.Free;
end
end;
end;

В общем по этому коду получается :2421, 2С29, ADAD, так и выводятся в Label, а надо чтоб если данные в ячейки соответствуют 2421, то в Label выводим что это: двигатель -мм, если 2C29, то это свеча -рр,  если ADAD, то это :фильтр-км....
Не получается построить условие которое бы обрабатывало данные и выводила готовый результат в Label.
Мозг весь вынес себе, на кране нервного срыва.
Прошу помощи у опытных профи.
Спасибо!!!


Плохиш   (2014-01-29 19:43:00) [1]


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

Усё понятно. Найми программиста.


clickmaker   (2014-01-29 19:19:00) [2]

бинарный поток сознания какой-то...


изыди   (2014-01-29 19:18:00) [3]

Вы, дорогой товарищ, не можете еще работать, т.к. с таким уровнем знания русского языка из школы не выпускают. И не надо тут на слабо нас брать, чай не мальчики. Если вы взялись за программирование, то будьте добры изучить основы, а то ваше if ($2421) =($2421) выглядит более чем странно. А если вы этого не понимаете, то не надо оно вам вообще и лучше заплатите денег профессианалу, чтобы он сделал вам эту работу.


brother   (2014-01-29 19:16:00) [4]

> самые гнилые профессии это программисты

хамим?


Семён   (2014-01-29 18:45:00) [5]

Удалено модератором


Вова   (2014-01-29 15:31:00) [6]

Воспользуйся любым файлообменником, а здесь дай на него ссылку.
Как ты определил, что файл бинарный?
Твои названия частей располагаются строго по определённым адресам или они присвоенны каким-то полям? Эти названия деталей в строковом формате или там какой-нибудь ID код детали?

Короче: нужно сначала выяснить, как хранятся данные в файле, а вытащить их оттуда уже не проблема.


Palladin   (2014-01-29 15:30:00) [7]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1208434700&n=6


Семён   (2014-01-29 15:00:00) [8]

Удалено модератором


Вова   (2014-01-29 13:47:00) [9]

Выложи файл, который хочешь читать.
Ты пробовал этот файл открывать текстовым редактором, если да - то что видишь там? А HEX-редактором? Или тебе точно известно, как располагаются данные?


brother   (2014-01-29 10:18:00) [10]

O_о Только не мой мозг!
зы. сам то понял, что накодил?


clickmaker   (2014-01-29 08:59:00) [11]

> if ($2421) =($2421)

похоже, нервный срыв таки произошел...


Семён   (2014-01-29 03:23:00) [12]

второй код тоже глухо клинит на последней позиции

begin
if ($2421) =($2421) then Label1.Caption := 'Dvigatel';
begin
if ($2C29) = ($2C29) then  Label1.Caption := 'Detalis';
begin
if ($A0A0)= ($A0A0) then Label1.Caption := 'Svetsa';
end

end;
end;
end;


Семён   (2014-01-29 03:18:00) [13]

Нет Плохиш не выходит! я сегодня пробывал подобное, но что то не так...

Вот первый код :
begin
if ($2421) =($2421) then
begin
Label1.Caption := 'Dvigatel';
end
else
if ($2C29) = ($2C29) then
begin
Label1.Caption := 'Detalis';
end
else
if ($A0A0)= ($A0A0) then
begin
  Label1.Caption := 'svetsa';
end;
end;
end;

компилируется программа, начинаю проверять на 3 разных прошивах, естественно с разными данными, клинит на первой позиции и всё тут на :'Dvigatel' и при загрузке другой прошивы  значение не меняеться, все три разных прошивы, а данные выводит одни 'Dvigatel'.

второй код:
тоже компилируется но прогу теперь клинит на последнем значении ' svetsa'
Всё тоже самое три разных прошивы, а выдаёт последнее значение и всё тут.
Среднее значение вообще не выводит хотя данную прошиву загружаю.
Явно либо касяк в коде, либо три условия не проверяет, а надо три.
Даже не знаю что ещё попробывать, при других вариантах не компилируется и постоянно ошибки.
Да условия ставлю после :
begin
Stream:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite or fmShareDenyNone);
Stream.Position:=$1F0;
stream.Read(a,2);
Label1.Caption:=IntToHex(a[0],2)+IntToHex(a[1],2);


Семён   (2014-01-29 01:50:00) [14]

В том то и вопрос, что считанные циферки известны это либо: $2421, либо может в этой же прошивке, быть : $A0A0, либо $2C29 под этими циферками и скрывается деталь, соответственно либо на один модуль зашиваеться, либо на второй, либо на третий, если в модуль зашить прошиву, не для той деталюхи, то он работать не будет. Поэтому и возникла не обходимость в написании  простой программки, которая бы считав данные с ячейки вывела бы их в Label и было бы известно на какой модуль можно её зашить, а на какой она не пойдёт и надо искать в базе прошиву соответствующую данным относящихся только к ней. Если проще, то если байты не совпадут то работать не будет.
Поэтому как можно поставить требуемые циферки, если требуемые известны , а других нет.... В том то вся и фишка чтоб загнать в прогу и она показала по считанным данным к какой деталюшке эта прошива.

А значит условие надо каким то образом строить между этими известными данными, их всего три. А вот как построить условия чтоб между тремя проверила и выдала результат уже в названии детальке.
И куда в моём коде вставлять это условие??? я только начал программированием заниматься и ещё намёки не понимаю, если можно то пример конкретный. А то я настроил условий прога перестала считанные циферки выводить, еле назад откатил.


Плохиш   (2014-01-29 00:34:00) [15]

if <считанные цыфири> = <требуемые цыфири> then Label1.Caption := 'требуемая деталюха';


Семён   (2014-01-28 23:34:00) [16]

В прогу выводится значение: 2421, A0A0,2C29 а как реалезовать обработку этих данных и чтоб заместо этих цифр было название детали.
Понимаю что надо условие построить ведь в одном файле на этой позиции могут быть разные значения, зависит от запчасти, поэтому и условие надо, если одно значение, значит это Двигатель, если другое значение свеча и.т.д
Прошива одна , а значения в ней могут быть разные, для разных моделей.


Семён   (2014-01-28 23:24:00) [17]

приношу извенения вот весь код, тот в спешке в ручную писал по памяти, опыт очень маленький, только начинаю, вот и дал маху
вот полный код:

procedure TForm1.SpeedButton1Click(Sender: TObject);
var Stream: TFileStream;
a: array [0..1023] of Byte;
begin
 with OpenDialog1 do
if Execute then
begin
Stream:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite or fmShareDenyNone);
Stream.Position:=$1F0;
stream.Read(a,2);
Label1.Caption:=IntToHex(a[0],2)+IntToHex(a[1],2);
end;
Stream.Free;
end ;

end.


Jeer   (2014-01-28 22:38:00) [18]

А нам он нужен, нервный срыв?
При таком-то способе изложения?

Разделителем является ;
Если есть что-то после = и до разделителя, то за исключением кавычек считать наименованием.


Наверх

Титульная страница Поиск, карта сайта Написать письмо