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

Ответить
Hikari
Сообщения: 5
Зарегистрирован: 15 ноя 2009, 20:01

Помоги пожалуйста решить данную задачу.
"Текстовый файл содержит наз. лекарства и его производителя, нужно сделать добавление в конец списка"
Добавление я сделал, но вот как сделать в программе, чтобы пробелы ставились автоматически. Если лекарство состоит из 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;
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Пиши каждое поле в файл с новой строки и читай соответственно - проблема должна исчезнуть. (или сделай типизированный файл)
Нет религии выше истины
Hikari
Сообщения: 5
Зарегистрирован: 15 ноя 2009, 20:01

Так нельзя, и типизированным файлом тоже нельзя (( :(
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Помогите пожалуйста :( :(
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

[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]
Нет религии выше истины
Hikari
Сообщения: 5
Зарегистрирован: 15 ноя 2009, 20:01

СПАСИБО ТЕБЕ ОГРОМНЕЙШЕЕ!)))) :D :D :D :D
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Hikari писал(а):СПАСИБО ТЕБЕ ОГРОМНЕЙШЕЕ!)))) :D :D :D :D
Лучше добавляйте отзывы - это вселяет больший энтузиазм :)
Нет религии выше истины
Hikari
Сообщения: 5
Зарегистрирован: 15 ноя 2009, 20:01

А вот как сосчитать сколько пробелов недостает в строке?)
Ну вот к примеру я написал лекарство: Ношпа_ _, тут до 7-ми символов не хватает 2х пробелов(символов)). Как сосчитать это в Паскале?
И запомнить это в перменной))
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

lenght(string)
Hikari
Сообщения: 5
Зарегистрирован: 15 ноя 2009, 20:01

Я знаю что с помощью этой команды) Но как сосчитать кол-во недостающих пробелов, до нужного))
К примеру:
Имя: Иванов_, до 7 символов не хватает одного пробела)) Вот как узнать, что одного символа не хватает?
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

[syntax="pascal"]
const n=7;
var a:string;
kol:byte;
begin
a:='Ношпа';
kol:=n-length(a);
end;
[/syntax]
Нет религии выше истины
Ответить