Форум: "Начинающим";
Текущий архив: 2015.03.01;
Скачать: [xml.tar.bz2];
Внизкак обработать полученные данные и вывести их в Label Найти похожие ветки
← →
Семён (2014-01-28 22:18) [0]Проблема в следующем: написал программку, для считывания данных из бинарного файла, данные успешно считываются, но так как данных в одной ячейки могут быть несколько, а определённому значению соответствует определённая деталь, то надо от полученных данных(какой на данный момент находится в файле) преобразовать в деталь и вывести в 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.
Мозг весь вынес себе, на кране нервного срыва.
Прошу помощи у опытных профи.
Спасибо!!!
← →
Jeer © (2014-01-28 22:38) [1]А нам он нужен, нервный срыв?
При таком-то способе изложения?
Разделителем является ;
Если есть что-то после = и до разделителя, то за исключением кавычек считать наименованием.
← →
Семён (2014-01-28 23:24) [2]приношу извенения вот весь код, тот в спешке в ручную писал по памяти, опыт очень маленький, только начинаю, вот и дал маху
вот полный код:
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.
← →
Семён (2014-01-28 23:34) [3]В прогу выводится значение: 2421, A0A0,2C29 а как реалезовать обработку этих данных и чтоб заместо этих цифр было название детали.
Понимаю что надо условие построить ведь в одном файле на этой позиции могут быть разные значения, зависит от запчасти, поэтому и условие надо, если одно значение, значит это Двигатель, если другое значение свеча и.т.д
Прошива одна , а значения в ней могут быть разные, для разных моделей.
← →
Плохиш © (2014-01-29 00:34) [4]if <считанные цыфири> = <требуемые цыфири> then Label1.Caption := "требуемая деталюха";
← →
Семён (2014-01-29 01:50) [5]В том то и вопрос, что считанные циферки известны это либо: $2421, либо может в этой же прошивке, быть : $A0A0, либо $2C29 под этими циферками и скрывается деталь, соответственно либо на один модуль зашиваеться, либо на второй, либо на третий, если в модуль зашить прошиву, не для той деталюхи, то он работать не будет. Поэтому и возникла не обходимость в написании простой программки, которая бы считав данные с ячейки вывела бы их в Label и было бы известно на какой модуль можно её зашить, а на какой она не пойдёт и надо искать в базе прошиву соответствующую данным относящихся только к ней. Если проще, то если байты не совпадут то работать не будет.
Поэтому как можно поставить требуемые циферки, если требуемые известны , а других нет.... В том то вся и фишка чтоб загнать в прогу и она показала по считанным данным к какой деталюшке эта прошива.
А значит условие надо каким то образом строить между этими известными данными, их всего три. А вот как построить условия чтоб между тремя проверила и выдала результат уже в названии детальке.
И куда в моём коде вставлять это условие??? я только начал программированием заниматься и ещё намёки не понимаю, если можно то пример конкретный. А то я настроил условий прога перестала считанные циферки выводить, еле назад откатил.
← →
Семён (2014-01-29 03:18) [6]Нет Плохиш не выходит! я сегодня пробывал подобное, но что то не так...
Вот первый код :
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 03:23) [7]второй код тоже глухо клинит на последней позиции
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;
← →
clickmaker © (2014-01-29 08:59) [8]> if ($2421) =($2421)
похоже, нервный срыв таки произошел...
← →
brother © (2014-01-29 10:18) [9]O_о Только не мой мозг!
зы. сам то понял, что накодил?
← →
Вова (2014-01-29 13:47) [10]Выложи файл, который хочешь читать.
Ты пробовал этот файл открывать текстовым редактором, если да - то что видишь там? А HEX-редактором? Или тебе точно известно, как располагаются данные?
← →
Семён (2014-01-29 15:00) [11]Удалено модератором
← →
Palladin © (2014-01-29 15:30) [12]http://delphimaster.net/view/16-1208434700/
← →
Вова (2014-01-29 15:31) [13]Воспользуйся любым файлообменником, а здесь дай на него ссылку.
Как ты определил, что файл бинарный?
Твои названия частей располагаются строго по определённым адресам или они присвоенны каким-то полям? Эти названия деталей в строковом формате или там какой-нибудь ID код детали?
Короче: нужно сначала выяснить, как хранятся данные в файле, а вытащить их оттуда уже не проблема.
← →
Семён (2014-01-29 18:45) [14]Удалено модератором
← →
brother © (2014-01-29 19:16) [15]> самые гнилые профессии это программисты
хамим?
← →
изыди (2014-01-29 19:18) [16]Вы, дорогой товарищ, не можете еще работать, т.к. с таким уровнем знания русского языка из школы не выпускают. И не надо тут на слабо нас брать, чай не мальчики. Если вы взялись за программирование, то будьте добры изучить основы, а то ваше if ($2421) =($2421) выглядит более чем странно. А если вы этого не понимаете, то не надо оно вам вообще и лучше заплатите денег профессианалу, чтобы он сделал вам эту работу.
← →
clickmaker © (2014-01-29 19:19) [17]бинарный поток сознания какой-то...
← →
Плохиш © (2014-01-29 19:43) [18]
> Чтоб написать маленькую программулинку в несколько строк,
> изучать тома по большей степени не нужной и не отвечающей
> реальному обучению информации которая есть в книжках многочисленных
> авторов , по крайней мери с головой крепко надо не дружить,
>
Усё понятно. Найми программиста.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2015.03.01;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.002 c