Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

Подскажите как грамотно решить следующую задачу   Найти похожие ветки 

 
Руслана   (2004-12-22 12:56) [0]

Имеется текстовый(test.txt) файл приблизительно такого содержания

@1100
31 40 00 0A B2 40 80 5A 20 01 3F 40 E8 FD B0 12
40 24 C2 43 33 00 F2 43 32 00 D2 C3 32 00 F2 43
31 00 F2 C0 20 00 31 00 C2 43 26 00 F2 43 22 00
F2 C0 56 00 22 00 F2 D2 22 00 F2 D0 20 00 22 00
F2 D0 80 00 22 00 F2 C0 A8 00 21 00 C2 43 24 00
E2 D2 25 00 E2 D3 24 00 E2 D3 25 00 F2 D0 40 00
24 00 F2 D0 40 00 25 00 C2 43 2E 00 F2 43 2A 00
B0 12 80 2C 1F 53 47 57 47 57 47 57 47 57 4C 57
CD 4C 00 00 1D 53 1E 83 EC 23 E9 3F
@FFE0
00 11 48 38 00 11 00 11 D6 37 00 11 86 38 4A 38
00 11 00 11 00 11 40 38 00 11 7E 38 00 11 00 11
@1000
00 00 40 00 00 00 00 00 01 00 00 00 00 00 00 00
0A 01 02 03 04 05 06 07
@FFC0
31 32 38
@FFD0
30 30 30 30 32 32

@1100, @FFE0, @1000 и т.д  - это адреса
31 40 00 0A ... - это данные которые надо записать начиная с соответствующего адреса

Адреса идут неравномерно , т.е. сначало может идти @FFFE, а потом @1000
Максимальный адрес @FFFF, то есть в файле может быть 65536 значений данных (31h, 40h, 00h...)

Как грамотно и максимально быстро записать указанные данные по соответствующим адресам в массив байт
Buffer[0..65535]:Array of byte? Данные в текстовом файле разделены пробелом 31пробел00.


 
Kair ©   (2004-12-22 14:07) [1]


var
 f: TextFile;
 s, ss: String;
 buf: array [0..65535] of array of Byte;
 n: Integer;
begin
n := 0;
AssignFile(f, "test.txt");
Reset(f);
while not EOF(f) do
 begin
  Readln(f, s);
  if Pos("@", s) > 0 then
   begin
    Delete(s, 1, 1);
    n := StrToInt("$" + s);
    s := "";
   end else
   begin
    if s[Length(s)] <> #32 then s := s + #32;
    while Pos(#32, s) > 0 do
     begin
      ss := Trim(Copy(s, 1, Pos(#32, s) - 1));
      Delete(s, 1, Pos(#32, s));
      SetLength(buf[n], Length(buf[n]) + 1);
      buf[n, Length(buf[n]) - 1] := StrToInt("$" + ss);
     end;
   end;
 end;
CloseFile(f);
end;


 
Johnmen ©   (2004-12-22 15:16) [2]

http://delphimaster.net/view/1-1103710048/



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
1-1103487729
redlord
2004-12-19 23:22
2005.01.09
tstringgrid смена ячейки для ввода


4-1101205001
clickmaker
2004-11-23 13:16
2005.01.09
Правка итема в листвью закрывает диалог


14-1103208751
}|{yk
2004-12-16 17:52
2005.01.09
Из журнала Мир Интернет


4-1101297270
DelphiN!
2004-11-24 14:54
2005.01.09
Вывести Opendialog поверх stayontop окна


1-1103552777
Dmitry
2004-12-20 17:26
2005.01.09
TChart. Метки перекрывают друг друга. Как избежать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский