Главная страница
    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.028 c
1-1103715240
12345
2004-12-22 14:34
2005.01.09
программная реализация передаточной функции


4-1101218492
snake1977
2004-11-23 17:01
2005.01.09
Активность кнопки


9-1095676694
DeFenix
2004-09-20 14:38
2005.01.09
Где можно скачать последнюю версию GlScene?


14-1103232615
Programmer
2004-12-17 00:30
2005.01.09
Электронный учебник по ассамблеру


14-1103595244
Чеширский_Кот
2004-12-21 05:14
2005.01.09
ФИФА признала Роналдиньо лучшим футболистом-2004





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский