![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как обработать полученные данные и вывести их в 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]А нам он нужен, нервный срыв?
При таком-то способе изложения?
Разделителем является ;
Если есть что-то после = и до разделителя, то за исключением кавычек считать наименованием.