Страница 1 из 1

Добавление данных в текстовый файл)

Добавлено: 15 ноя 2009, 20:14
Hikari
Помоги пожалуйста решить данную задачу.
"Текстовый файл содержит наз. лекарства и его производителя, нужно сделать добавление в конец списка"
Добавление я сделал, но вот как сделать в программе, чтобы пробелы ставились автоматически. Если лекарство состоит из 7 символов, то первые три символа из названии производителя, печатаются в названии лекарства. ЗАранее благодарю)
Uses Crt;
Var
F : Text;
Ch : Char;
Lek : String[10];
Pro : String[20];

Procedure AppendFile;
begin
Assign(F, 'data.dat');
{$I-}
Append(F);
{$I+}
If IOResult <> 0 Then
begin
WriteLn('Ошибка открытия файла');
Halt;
end
Else
begin
WriteLn;
Repeat
Write('Лекарство: ');
ReadLn(Lek);
If Lek <> '' Then
begin
Write('Производитель: ');
ReadLn(Pr);
WriteL(F, Lek);
WriteLn(F, Pr);
end;
Until Lek = '';
Close(F)
end;

Procedure ReadFile;
begin
Assign(F, 'data.dat');
{$I-}
Reset(F);
{$I+}
If IOResult <> 0 Then
begin
WriteLn('Ошибка открытия файла*');
Halt;
end
Else
begin
WriteLn;
While Not Eof(F) Do
begin
Read(F,Lek );
ReadLn(F, Pr);
WriteLn('Лекарство: ', Lek, ' Производитель*: ', Pr);
end;
Close(F);
ReadLn;
end;
end;

Re: Добавление данных в текстовый файл)

Добавлено: 15 ноя 2009, 20:56
dr.Jekill
Пиши каждое поле в файл с новой строки и читай соответственно - проблема должна исчезнуть. (или сделай типизированный файл)

Re: Добавление данных в текстовый файл)

Добавлено: 15 ноя 2009, 20:59
Hikari
Так нельзя, и типизированным файлом тоже нельзя (( :(
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Помогите пожалуйста :( :(

Re: Добавление данных в текстовый файл)

Добавлено: 17 ноя 2009, 01:07
dr.Jekill
[syntax="pascal"]Uses Crt;
Var F : Text;
NameFile,Lek,Pro,a: String;
vybor:char;
begin
clrscr;
write('Vvedite put i imia faila bez rasshirenia: ');
readln(NameFile);
Assign(F, NameFile+'.txt');
{$I-}
Append(F);
{$I+}
if IOResult<>0 Then
begin
clrscr;
WriteLn('Oshibka s failom! ',NameFile+'.txt');
readln;
Halt;
end
else
begin
writeLn('Vvedite dannye.');
Repeat
Write('Lekarstvo: ');
ReadLn(Lek);
Write('Proizvoditel: ');
ReadLn(Pro);
until (Length(lek)>0) and (Length(pro)>0);
Write(F, Lek+' ');
WriteLn(F, Pro);
Close(F);
writeln('Zapisi uspeshno dobavleny.');
end;
write('Vyvesti dannye iz faila? [y/n] ');
vybor:=readkey;
if (vybor='y') or (vybor='Y') then
begin
clrscr;
Assign(F, NameFile+'.txt');
Reset(F);
WriteLn('File: ',NameFile+'.txt');
While Not Eof(F) Do
begin
Readln(F,a);
WriteLn('Lekarstvo: ', copy(a,1,pos(' ',a)), ' Proizvoditel: ', copy(a,pos(' ',a),length(a)-pos(' ',a)+1));
end;
Close(F);
end;
write('Press any key to EXIT... ');
readkey;
end.[/syntax]

Re: Добавление данных в текстовый файл)

Добавлено: 17 ноя 2009, 01:10
Hikari
СПАСИБО ТЕБЕ ОГРОМНЕЙШЕЕ!)))) :D :D :D :D

Re: Добавление данных в текстовый файл)

Добавлено: 17 ноя 2009, 01:14
dr.Jekill
Hikari писал(а):СПАСИБО ТЕБЕ ОГРОМНЕЙШЕЕ!)))) :D :D :D :D
Лучше добавляйте отзывы - это вселяет больший энтузиазм :)

Re: Добавление данных в текстовый файл)

Добавлено: 18 ноя 2009, 21:58
Hikari
А вот как сосчитать сколько пробелов недостает в строке?)
Ну вот к примеру я написал лекарство: Ношпа_ _, тут до 7-ми символов не хватает 2х пробелов(символов)). Как сосчитать это в Паскале?
И запомнить это в перменной))

Re: Добавление данных в текстовый файл)

Добавлено: 18 ноя 2009, 22:34
Newbie
lenght(string)

Re: Добавление данных в текстовый файл)

Добавлено: 18 ноя 2009, 23:00
Hikari
Я знаю что с помощью этой команды) Но как сосчитать кол-во недостающих пробелов, до нужного))
К примеру:
Имя: Иванов_, до 7 символов не хватает одного пробела)) Вот как узнать, что одного символа не хватает?

Re: Добавление данных в текстовый файл)

Добавлено: 19 ноя 2009, 00:46
dr.Jekill
[syntax="pascal"]
const n=7;
var a:string;
kol:byte;
begin
a:='Ношпа';
kol:=n-length(a);
end;
[/syntax]