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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2012, 16:13   #1
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию Проблема с кодировками, Delphi

проблема в том что данные принимаемые с оборудования неправильно переводятся(или все же снимаются с ошибкой)
проблемы только со вторым столбцом
в первом файле данные только снятые без каких либо обработок
после их приема проводим над ними сразу это

Код:
  s2:=StrToHex(S);

function StrToHex(source: String): String;
var i:integer;
    c:Char;
    s:String;
begin
    s := '';
    for i:=1 to Length(source) do
    begin
      c := source[i];
      s := s +  IntToHex(Integer(c),1)+' ';
    end;
    result := s;
end;
получаем второй файл

после проводим это

Код:
Delete(s2, 6, 8);
s2:=StringReplace(s2,' ','',[RFReplaceall]);
edit2.Text:=(floattostr(StrToFloat(IntToStr(hextoint(ReplaceWords(ReplaceCenterWords(s2)))))/10));

function ReplaceCenterWords(S : String) : String;
var
  L : TStringList;
  I : Integer;
begin
  Result := S;
  L := TStringList.Create;
  L.Text := StringReplace(S,' ',#13#10,[rfReplaceAll]);
  If L.Count mod 2 = 0 Then
    Begin
       L.Exchange((L.Count div 2)-1,(L.Count div 2));
       Result := StringReplace(L.Text,#13#10,' ',[rfReplaceAll]);
    End;
  L.Free;
end;


function ReplaceWords(S : String) : String;
begin
s:=s+copy(s,1,2);
delete(s,1,2);
result:=s;
end;

function getValue(hex: char):integer;
begin
	if (Ord(hex) > 47) and (Ord(hex) < 57) then
		Result:= Ord(hex) - 48
	else if (Ord(hex) > 96) then
		Result:= Ord(hex) - 87
	else
		Result:= Ord(hex)-55;
end;

function HexToInt(hex: string): integer;
var
  i,r: Integer;
begin
  r:=0;
  for i := 1 to Length(hex) do
  begin
    r:=r*16+getValue(hex[i]);
  end;
  Result:=r;
end;

function IntToFloat(x: Integer): real;
begin
  StrToFloat(IntToStr(x));
end;
а теперь проблема
данные второго столбца должны постипенно идти на убыть а не вести себя так

Код:
193,0306  185,8  11:19:25:859
193,0308  185,8  11:19:26:968
193,0295  11,9  11:19:27:953
193,0319  11,9  11:19:29:062
193,0318  11,9  11:19:30:031
193,0437  11,9  11:19:31:140
193,0196  174,1  11:19:32:125
193,0307  174,1  11:19:33:234
то есть должно выгладить примерно так

Код:
193,0306  185,8  11:19:25:859
193,0308  185,8  11:19:26:968
193,0295  182  11:19:27:953
193,0319  180  11:19:29:062
193,0318  179 11:19:30:031
193,0437  176  11:19:31:140
193,0196  174,1  11:19:32:125
193,0307  174,1  11:19:33:234
покажите где у меня ошибка (я все же думаю что она в кодировке), спасибо
Вложения
Тип файла: txt первый.txt (1.4 Кб, 134 просмотров)
Тип файла: txt второй.txt (1.8 Кб, 131 просмотров)
Тип файла: txt третий.txt (1.6 Кб, 143 просмотров)
SonicBob вне форума Ответить с цитированием
Старый 25.01.2012, 22:19   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
после проводим это
А что мешает это сразу ложить в динмассив? А после его можно отсортировать любыми методами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2012, 04:04   #3
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А что мешает это сразу ложить в динмассив? А после его можно отсортировать любыми методами.
честно, не понимаю про что ты, расскажи подробней
в моем методе есть ошибки?или это просто не рационально?
SonicBob вне форума Ответить с цитированием
Старый 26.01.2012, 15:09   #4
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

или все же у меня не правильно с самого начала принимаются данные?
SonicBob вне форума Ответить с цитированием
Старый 27.01.2012, 12:29   #5
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

как всегда с моими темами на этом форуме, ноль ответов по вопросу, мб надо перегаться с женским ником?
SonicBob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодировками kakawkin Работа с сетью в Delphi 9 05.01.2010 21:22
Проблема з кодировками! hoza_syl PHP 3 10.10.2009 15:10
Работа с кодировками tsergey PHP 1 01.09.2009 16:05
Проблема с кодировками igroman Общие вопросы C/C++ 9 25.01.2009 22:25
Проблема с кодировками, шрифтами.. Gauss Общие вопросы Delphi 13 16.02.2008 23:16