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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2006, 20:43   #1
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию нужна ваша помощь

Друзья, нужна помощь начинающему программисту.
Хочу написать на мой взгляд не очень сложную программку в Delphi 7.
Например есть файл созданный в блокноте - в нем 10 строк по 5 чисел от 1 до 10 (через пробел).
Их нужно сделать переменными а потом подсчитать какое число больше всего встречалось в этих строках.
Вроде всё
SashaB вне форума Ответить с цитированием
Старый 13.11.2006, 23:28   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

1) нужно считать данные из файла, самое простое загрузить в memo. например, memo1.lines.loadfromfile('1.txt'), теперь можно уже работать с memo.

memo1.lines[0] ...
Alar вне форума Ответить с цитированием
Старый 14.11.2006, 00:08   #3
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
Радость

Цитата:
Сообщение от Alar Посмотреть сообщение
1) нужно считать данные из файла, самое простое загрузить в memo. например, memo1.lines.loadfromfile('1.txt'), теперь можно уже работать с memo.

memo1.lines[0] ...
Я взял для примера 3 переменных.
Вот часть проги:

var x,y,z:real;
begin
memo4.Clear;
memo1.lines.loadfromfile('1.txt');
memo2.lines.loadfromfile('2.txt');
memo3.lines.loadfromfile('3.txt');
x:=strtofloat(memo1.text);
y:=strtofloat(memo2.text);
z:=strtofloat(memo3.text);
.....
А если к примеру у меня будет не x,y,z а 100 таких переменных, то мне 100 файлов ***.txt создавать. ?
Или все таки есть способы попроще?
SashaB вне форума Ответить с цитированием
Старый 14.11.2006, 06:31   #4
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Цитата:
Сообщение от SashaB Посмотреть сообщение
А если к примеру у меня будет не x,y,z а 100 таких переменных, то мне 100 файлов ***.txt создавать. ?
Или все таки есть способы попроще?
Ты немножко непонял, Alar имел ввиду, что из ОДНОГО файла, в котором как ты сказал есть десять строк по пять чисел, нужно загрузить в Memo все строки с помощью команды memo1.lines.loadfromfile('Имя файла'), а уже после работать с Memo, а не с самим файлом.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 14.11.2006, 08:34   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Зря так делаете. Ничего загружать не надо, надо напрямик считывать в массив. Напомню одну важную вещь: если из текстового файла читать число (read(f,i); //где f:textfile, а i:integer), тогда бедет считано ОДНО число (до первого пробела). Таким образом не надо будет парится с распознаванием чисел (отслеживать пробелы, переводить строку в число и прочее...)
Как делать понятно? (могу код написать только вечером)
zetrix вне форума Ответить с цитированием
Старый 14.11.2006, 15:58   #6
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Зря так делаете. Ничего загружать не надо, надо напрямик считывать в массив. Напомню одну важную вещь: если из текстового файла читать число (read(f,i); //где f:textfile, а i:integer), тогда бедет считано ОДНО число (до первого пробела). Таким образом не надо будет парится с распознаванием чисел (отслеживать пробелы, переводить строку в число и прочее...)
Как делать понятно? (могу код написать только вечером)
Вот это то что надо.
Но я попробовал только что, ниче не выходит. Если не сильно тяжело то напишите код.

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Ты немножко непонял, Alar имел ввиду, что из ОДНОГО файла, в котором как ты сказал есть десять строк по пять чисел, нужно загрузить в Memo все строки с помощью команды memo1.lines.loadfromfile('Имя файла'), а уже после работать с Memo, а не с самим файлом.
Это уже мне понятно.
А вот как дальше с Memo работать?
Как этот набор строк и чисел преобразовать в массив!?

Последний раз редактировалось zetrix; 14.11.2006 в 18:39.
SashaB вне форума Ответить с цитированием
Старый 14.11.2006, 16:09   #7
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
Сообщение от SashaB Посмотреть сообщение
Это уже мне понятно.
А вот как дальше с Memo работать?
Как этот набор строк и чисел преобразовать в массив!?
может это гораздо сложнее просто я уже давно так работаю...
нужно написать цикл от 0 до count-1 строки и считывать посимволно новое число до пробела, потом strtoint, в массив. Делай как посоветует zetrix, это классическое pascal решение.
Alar вне форума Ответить с цитированием
Старый 14.11.2006, 18:31   #8
SashaB
Пользователь
 
Регистрация: 13.11.2006
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
может это гораздо сложнее просто я уже давно так работаю...
нужно написать цикл от 0 до count-1 строки и считывать посимволно новое число до пробела, потом strtoint, в массив. Делай как посоветует zetrix, это классическое pascal решение.
Может и сложнее но мне и таким способом хотелось бы попробовать.
Ну преобразовать числа в массив, при помощи цикла для меня не проблема, только если они будут стоять не через пробел, а каждое число на разной строке, а мне нужно что бы в строке было не одно число
А вот как считать посимвольно число до пробела?
SashaB вне форума Ответить с цитированием
Старый 14.11.2006, 18:45   #9
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

все просто - объявляешь строчку для буфера, если находишь цифру - добывляешь ее в строку-буфер, натыкаешься на пробел - преобразовываешь буфер в переменную, потом буфер чистишь и продолжаешь цикл.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 14.11.2006, 18:58   #10
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Код:
var
  Form1: TForm1; a:array[1..5,1..10] of byte;//массив, куда всё будет сохранено

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var f:textfile; i,j:byte;
begin
assignfile(f,'111.txt'); //твой файл с числами
reset(f); //открытие файла для чтения
for i:=1 to 10 do
 begin
 for j:=1 to 5 do read(f,a[j,i]); //чтение чисел
 readln(f); //переход на следующую строчку
 end;
closefile(f); //закрытие файла
end;
Здесь написано просто чтение чисел, а какое чаще всего встречалось - это уже дело не сложное.
zetrix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна ваша помощь! forsy Паскаль, Turbo Pascal, PascalABC.NET 2 19.05.2008 14:38
прога на С/С++(нужна ваша помощь) AlterEgo Помощь студентам 1 09.09.2007 18:41