1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Задача:Создать текстовый файл, в котором содержаться сведения о рабочих( Фамилия, Инициалы, Зарплата) К примеру: Петров ИИ 1200 Сидоров ПР 2000 Попов КП 3000
Надо считать эти записи, и отсортировать по зарплате. Использовать процедуры. Вот такие пероги. Если кто может помочь, помогите пожалуйста.
Просто я не знаю как написать процедуру обработки текстового файла, по-этому и обратился за помощью к знающим людям
Вот процедура доступа outputfile:
Цитата
type base = RECORD name, ini:string; money: integer; END;
mass = array [1..n] of string;
var people : array [1..100] of base; nm : base; f: text; m:mass i,j:integer;
procedure outputfile(var q:integer); var i:integer; begin assign (f,'D:\Delphi7\Rabotnik.txt'); reset(f); i:=1; repeat readln(f,m[i]); inc(i); until eof(f); close (f); q:=i; end;
procedure Sort(var S: TStrings; const size: Integer); var i, j: Integer; temp: String; begin for i := size downto 2 do for j := 1 to i - 1 do if GetMOney(S[j]) <= GetMoney(S[j + 1]) then begin temp := S[j]; S[j] := S[j + 1]; S[j + 1] := temp; end; end;
procedure WriteToFile(const fName: String; const S: TStrings; const size: Integer); var f: TFile; i: Integer; begin assign(f, fName); rewrite(f); for i := 1 to size do writeln(f, S[i]); Close(f); end;
var S: TStrings; size: Integer; begin size := ReadData('C:\forum.txt', S); Sort(S, size); WriteToFile('C:\forum.txt', S, size); end.
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
Вот этаже прога(но эна просто считывает записи из текстового файла и выводит на экран), но она не хочет выводить на экран записи, в чем ошибка?
program S4itivaemIzFaila;
{$APPTYPE CONSOLE}
uses SysUtils;
const n=1000; type base = RECORD name, ini:string; money: integer; END; mass = array [1..n] of string;
var people : array [1..100] of base; nm : base; f: text; m,pr:mass; s,maxclovo:string; i,j,k,p:integer;
procedure outputfile(var q:integer); var i:integer; begin assign (f,'D:\Delphi7\Student.txt'); reset(f); i:=1; repeat readln(f,m[i]); inc(i); until eof(f); close (f); q:=i; end;
Procedure Obrabotka( Var q:integer); Var a:string; i,k,j,r:integer; Begin For j:=1 to q do begin i:=1; Writeln(j,' '); a:=pr[j]+' '; Repeat k:=Pos(' ',a); if i=1 then begin people[j].name:=copy(a,1,k-1); write(' ':1,people[j].name:6); end; if i=2 then begin people[j].ini:=copy(a,1,k-1); write(' ':1,people[j].ini:6); end; if i=3 then begin val(copy(a,1,k-1),r,r); people[j].money:=r; write(people[j].money:6); end; inc(i); delete(a,1,k); until k = 0; writeln; end; End;
BEGIN Writeln('Obshiu* spisok rabotnikov:'); Writeln;
outputfile(p); Obrabotka(p); Readln;
{ TODO -oUser -cConsole Main : Insert code here } END.
Почему файл делаешь текстовым? Читаешь ты его ведь в переменную типа base, а значит и файл должен быть типизированным..
f: file of base
Цитата
но эна просто считывает записи из текстового файла и выводит на экран
А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base .
Сообщение отредактировано: Bokul -
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
[/quote] А так не пойдёт, с текстовые и работать надо по-другому - читать не в переменную типа base, а в строку, потом ее анализировать (разделять на компоненты) и только после этого присваивать их соответственным полям base . [/quote]
Подскажи пожалуйста, что именно мне нужно исправить
Grey-99, тебе же klem4 уже написал рабочий вариант программы с текстовыми файлами. Что еще надо?
--------------------
Лао-Цзы : Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.