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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2016, 10:38   #1
Crisr7777
Новичок
Джуниор
 
Регистрация: 29.02.2016
Сообщений: 3
По умолчанию Программа для работы со строками

Всем добрый день.
Прошу вас помочь мне в решении одной задачи на Delphi.
Задача: Есть текстовый файл, примерно с таким содержанием:
@123
he1h
he12
10hh
.
.
.
#123.... = какое-то число.
Задача состоит в следующем, это должна быть консоль, в которой после определяющего @123 далее по строкам идет сложение строк в которых содержатся 16-ти ричные числа. После сложения нам надо заменить #123... на полученную сумму, которая у нас получилась при сложении.
Другими словами: когда мы видим @, далее мы начинаем складывать строки друг с другом, до того момента, когда мы увидели #. После того, как увидели #, записываем нашу сумму вместо, числа #123.
Буду очень благодарен, если поможете.
Crisr7777 вне форума Ответить с цитированием
Старый 29.02.2016, 11:14   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

TStringList
метод LoadFromFile
цикл по строчкам.
в цикле,
если в строке в начале "@" - то обнуляем переменную с суммой
если в строке в начале "#" - выводим переменную с суммой в данную строчку
иначе
взять число из строки (с проверкой, что это именно число) и суммировать.

Выгрузить стринглист в файл методом SaveToFile('имяфайла.txt');

конец.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.02.2016, 11:45   #3
Crisr7777
Новичок
Джуниор
 
Регистрация: 29.02.2016
Сообщений: 3
По умолчанию

Спасибо, Сергей, но сложность в том, что я не могу понять, как в Delphi сложить по строкам, 16-ти ричные числа, какими командами? Если не сложно можете пример скинуть?
Crisr7777 вне форума Ответить с цитированием
Старый 29.02.2016, 11:47   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

А как программа должна вести себя в случае ошибки?
И, таки да, автор, дай исходный файл.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.02.2016, 13:57   #5
Crisr7777
Новичок
Джуниор
 
Регистрация: 29.02.2016
Сообщений: 3
По умолчанию

Больше значение пока не имеет, как будет при ошибке.
Пока все, что есть:
var
myFile: TextFile;
s, buf: string;
begin
AssignFile(myFile, 'test.txt');
Reset(myFile);
while not eof(myFile) do
begin
Readln(myFile, s);
if s = 'привет' then s:= '&3';
buf:= buf + s + #13#10;
end;
CloseFile(myFile);
Rewrite(myFile);
Writeln(myFile, buf);
CloseFile(myFile);
end.
Тут заменяется нужная строка. Но как сложить значения не очень понимаю.
Crisr7777 вне форума Ответить с цитированием
Старый 29.02.2016, 14:03   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Я файл просил. Тебе жалко штоли?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.02.2016, 14:19   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Crisr777, очень жаль, что Вы проигнорировали мой совет насчёт TStringList


Цитата:
Но как сложить значения не очень понимаю.
вот пример - тыц
Код:
program ideone;
uses sysutils;

var s : string;
  summa:integer;
begin
	summa := 0;
	s:='0e1a';
	summa := summa + StrToInt('$'+Trim(s));
	
	s:='  ee12 ';
	summa := summa + StrToInt('$'+Trim(s));
	
	s:='10fd';
	summa := summa + StrToInt('$'+Trim(s));
	
	WriteLn('Summa in decimal = ', summa);
	WriteLn('Summa in hex = ', IntToHex(summa,8));
	
end.
но учтите, что
Цитата:
he1h
he12
10hh
это НЕ ШЕСТНАДЦАТЕРИЧНЫЕ числа ( нет цифры h в записи hex-числа).
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать класс string для работы со строками с# wordast Общие вопросы C/C++ 1 16.12.2013 05:26
Классс для работы со строками значительно превышающих 2 Ггб alex_dorin Visual C++ 4 20.10.2012 05:37
Функции библиотеки для работы со строками и символами на С++ Ice_Cherry Помощь студентам 0 03.06.2011 17:19
Библиотека для работы со строками kloffelin Общие вопросы C/C++ 14 24.10.2010 13:04
HELP!Си - программа для работы со строками + сумма строк в матрице! DUPLET Помощь студентам 1 20.12.2007 21:16