Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программу простейшего редактора текстов. 
:(
    Опции темы
Ddddddelphi
Дата 20.12.2004, 05:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



я попробовал сделать вот такой
Код

var
s,s1:string;

begin
s:='fdss fds f '
s1:='';
repeat
s1:=s1+copy(s,1,pos(' ',s));
delete(s,1,pos(' ',s);
delete(s1,pos(' ',s1),length(s1));
until length(s)=0;
end;

здесь получаем строку вобще без пробелов, но прибавить пробел, или заставить в команде delete оставлять один пробел тоже не получилось, иначе выдаст - fdss и всё.
есть идея запоминанать строки в строковом массиве, но не думая, что моя идея здесь подойдёт
PM MAIL   Вверх
Vit
Дата 20.12.2004, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ddddddelphi - аааа зачем так? Чем мой код плох?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Ddddddelphi
Дата 20.12.2004, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 1.12.2004

Репутация: нет
Всего: нет



Цитата(Vit @ 20.12.2004, 02:11)
Подработать можно, но очень сложно, код неправильно изначально разработан, доработать - это его заново переписать, а решение я уже давал, вот и ещё раз даю...

я после этих строк...
но если работает зашибись! = smile smile smile
PM MAIL   Вверх
Yanochka
Дата 20.12.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


Профиль
Группа: Участник Клуба
Сообщений: 1256
Регистрация: 7.10.2004
Где: Москва

Репутация: нет
Всего: 79



Vit
Задача моя учебная. Дело в том, что мне надо вточности как в задании написано. Я уже импровезировала, когда придыдущие делала, но мне за это снижали оценки. Вот и мучаюсь теперь все в точности по условию делать. smile


--------------------
user posted image 
PM MAIL ICQ   Вверх
Vit
Дата 20.12.2004, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Другими словами надо пробелы удалять построчно? Тогда:

Код

For i:=0 to memo1.lines.count-1 do
 begin
   s:=memo1.lines[i];
   while pos('  ',s)>0 do Delete(s,pos('  ',s),1);
   memo1.lines[i]:=s;
 end;

Добавлено @ 16:57
Yanochka - опубликуй условие задачи целиком, оно у меня не грузится по тому линку


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
SlaUr
Дата 20.12.2004, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



1.copy(memo1.Lines[i],j,1) это все равно что memo1.Lines[i][j]
2.IMHO Лучший предложеный вариант для убирания лишних пробелов while pos(' ',s)>0 do Delete(s,pos(' ',s),1);(самый простой и работающий без ошибок)

Это сообщение отредактировал(а) SlaUr - 20.12.2004, 18:10
PM MAIL   Вверх
Yanochka
Дата 20.12.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


Профиль
Группа: Участник Клуба
Сообщений: 1256
Регистрация: 7.10.2004
Где: Москва

Репутация: нет
Всего: 79



Цитата
Условие задачи. Разработать программу простейшего редак-тора текстов.
С экрана вводится произвольный текст. Текст построчно со-храняется в файле. Прочитать текст построчно из файла и в ка-ждой строке удалить лишние пробелы между словами, кроме од-ного. Вывести преобразованный текст в другое экранное окно.

Пояснения к решению задачи. Решение задачи с большим объ-емом входной информации, типа многострочного текста, требует обеспечения работы пользователя в более удобной форме, чем обычный ввод данных с клавиатуры компьютера. Чтобы один раз введенный текст не приходилось набирать заново, его предлагается сохранять в файле. Если в условии задачи предлагается работать с текстом, то для работы с текстом надо определить текстовый файл.
Вопрос 1. Запишите определение текстового файла: Type_________Var
Вопрос 2. Запишите основные процедуры и функции в языке для работы с текстовыми файлами:
1. Для определения размера файла ___________
2. Для записи данных по строкам в файл ________
3. Для чтения данных по строкам из файла ______
Вопрос 3. Опишите действия, которые определяют режимы ра-боты с файлом:
1. Связь конкретного файла с файловой переменной
2. Установление режима записи данных в файл
3. Установление режима чтения данных из файла
4. Добавление записи в текстовый файл без перезаписи данных
5. Закрытие файла
Вопрос 4. Проверьте свои знания по компоненту OpenDialog:
1. Назовите страницу, на которой находится компонент:
2. Запишите предложение для проверки существования файла:
3. Запишите сообщение об отсутствии требуемого файла:
4. Запишите последовательность действий с компонентом для открытия диалога только для выбранного вами типа файлов, напри-мер, *.pas, *.myf или любого другого расширения:
Выбрать свойство компонента OpenDialog
Записать выражение, которое обеспечит выборку при открытии диалога только требуемого типа файлов – текстового:

Запишите процедуру создания формы:
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1. ________________________________ ;
memo2. ________________________________ ;
edit1. ___________________________________ ;
end;

Опишите все объявленные типы данных и переменные, которые будут действительны для всех методов вашей программы. Для работы с файлами среда Delphi требует ограничить длины строк, поэтому надо ввести новый тип строки, ограниченной длины:
Type    Строка_____________
            Файл______________
            Переменные_________


Напишите текст функции для удаления лишних пробелов в одной строке текста. В списке формальных параметров функции обязательно надо указать строковую переменную. Тип результата вычисления функции должен быть также строкой.
function  Stroka( ________________ ): ____________ ;
  var
  begin
По алгоритму --Resize_Images_Alt_Text--

Написать процедуру для считывания текста из первого окна в файл
procedure TForm1.N1Click(Sender: TObject);
var
begin
// Процедура закрытия файла
end;

Напишите процедуру для чтения текста из файла, преобразования текста и вывода преобразованного текста во второе текстовое окно (для альтернативы меню «Преобразование текста»). При работе с файлами необходимо в программе иметь действие, обеспечивающее проверку существования файла или его правильного выбора.
procedure TForm1.N3Click(Sender: Tobject);
var
// Проверка существования файла
begin
End;

Для завершения текста программы осталось написать альтернативу меню «Выход». Это действие опишите самостоятель-но. Запустите программу и протестируйте ее с произвольными тек-стами и файлами.


Вот что мне надо сделать..
Может Это скачается

Это сообщение отредактировал(а) Yanochka - 20.12.2004, 18:23


--------------------
user posted image 
PM MAIL ICQ   Вверх
SlaUr
Дата 20.12.2004, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Функция Для определения размера файла(выдает -1 если файла нет)

Код

Function FileSize(path:string):int64;
var s1:tSearchRec;
if FindFirst(path,faAnyFile,S1) = 0 then
begin
Result:=s1.Size;
end else Result:=-1;

end;

2. Для чтения данных по строкам из файла
Если бы не было написано по строкам то можно было бы написать просто Memo1.lines.LoadFromFile а так придется вручную:
Код

var f1:text;

Procedure Read(path:string);
var st1:string;
begin
Assign(F1,path);
{$I-}Reset(F1);        {$I+}
if IORESULT<>0 then begin ShowMessage('Нет входного файла');Exit;end;
Form1.Memo1.Lines.Clear;
While Not Eof (F1) do
begin
  ReadLn(f1,st1);
   Form1.Memo1.Lines.Add(St1);
end;
{$I-}Close(F1) {$I+};if IORESULT<>0 then;

end;



2. Для записи данных по строкам в файл
Код

var f1:text;

procedure Save(path:string);
var i1:integer;
begin
Assign(F1,path);
{$I-}Rewrite(F1);        {$I+}
if IORESULT<>0 then begin ShowMessage('Нет могу создать выходной файл');Exit;end;
For i1=0 to memo2.Lines.Count-1 do WriteLn(F1,memo2.lines[i1]);
{$I-}Close(F1) {$I+};if IORESULT<>0 then;
end;


Это сообщение отредактировал(а) SlaUr - 20.12.2004, 18:19
PM MAIL   Вверх
Vit
Дата 20.12.2004, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(SlaUr @ 20.12.2004, 08:41)
1.copy(memo1.Lines[i],j,1) это все равно что memo1.Lines[i][j]


Нет, если строка короче чем j то copy(memo1.Lines[i],j,1) проглотит без ошибок, а memo1.Lines[i][j] чревато многочисленными проблемами, от index out of bound в лучшем случае до необъяснимого Access Violation в каком-то случайном месте.

Цитата
Вопрос 1. Запишите определение текстового файла: Type_________Var


Var t:TextFile;

Цитата
Вопрос 2. Запишите основные процедуры и функции в языке для работы с текстовыми файлами:
1. Для определения размера файла ___________


Код

Function GetFileSize(FileName:string):int64;
 var sr:TSearchRec;
begin
 if SysUtils.FindFirst(FileName, faAnyFile, sr)=0 then Result:=sr.Size else Result:=-1;
 SysUtils.Findclose(sr);
end;


2. Для записи данных по строкам в файл ________

Код

Procedure WriteToFile(FileName:string; Content:TStrings);
 var t:TextFile;
       i:integer;
begin
 AssignFile(t, FileName);
 Rewrite(t);
 For i:=0 to Content.count-1 do Writeln(t, Content[i]);
 CloseFile(t);
end;


Применение:

WriteToFile('c:\myText.txt', Memo1.lines);


Цитата
3. Для чтения данных по строкам из файла ______

Код

Procedure ReadFromFile(FileName:string; Content:TStrings);
 var t:TextFile;
       s:String;
begin
 AssignFile(t, FileName);
 Reset(t);
 Content.clear;
 While not eof(t) do
   begin
      Readln(t, s);
      Content.Add(s);
   end;
 CloseFile(t);
end;


Применение:

ReadFromFile('c:\myText.txt', Memo1.lines);


Цитата
Вопрос 3. Опишите действия, которые определяют режимы ра-боты с файлом:

1. Связь конкретного файла с файловой переменной

AssignFile(t, FileName);

Цитата
2. Установление режима записи данных в файл
3. Установление режима чтения данных из файла


Имеется ввиду reset/rewrite/append или FileMode?

4. Добавление записи в текстовый файл без перезаписи данных

Append(t);

5. Закрытие файла

CloseFile(t);

Вопрос 4. Проверьте свои знания по компоненту OpenDialog:
1. Назовите страницу, на которой находится компонент:

На той на которую поставишь, Дельфи позволяет менять эту страницу. По умолчанию - Dialogs

2. Запишите предложение для проверки существования файла:

Код

if FileExists(OpenDialog1.FileName) then


3. Запишите сообщение об отсутствии требуемого файла:

Код

if not FileExists(OpenDialog1.FileName) then
 ShowMessage(Format('File %s is not exist',[OpenDialog1.FileName]))



Цитата
Запишите процедуру создания формы:
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1. ________________________________ ;
memo2. ________________________________ ;
edit1. ___________________________________ ;
end;


Этого я не понял!

Цитата
Опишите все объявленные типы данных и переменные, которые будут действительны для всех методов вашей программы. Для работы с файлами среда Delphi требует ограничить длины строк, поэтому надо ввести новый тип строки, ограниченной длины:
Type   Строка_____________
            Файл______________
            Переменные_________


Выделенная красным брехня! Для строковых типов ограничений по длинне нет, есть только некомпетентность преподавателей, испрользуем:

Код

procedure TForm1.Button1Click(Sender: TObject);
 var s:string;
     i:integer;
     t:TextFile;
begin
 AssignFile(t,'c:\test.txt');
 Rewrite(t);
 For i:=1 to 100000 do s:=s+'A';
 Writeln(t, s);
 CloseFile(t);
end;


Пожалуйста - этот код записывает строку в 100000 символов!

Напишите текст функции для удаления лишних пробелов в одной строке текста. В списке формальных параметров функции обязательно надо указать строковую переменную. Тип результата вычисления функции должен быть также строкой.

Код

function  Stroka(s:string):string;
 begin
   while pos('  ',s)>0 do Delete(s,pos('  ',s),1);
   result:=s;
 end;



Цитата
Написать процедуру для считывания текста из первого окна в файл



Пример уже давал

PS. Господи! За что ты наказываешь нас преподавателями-дегенератами!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Yanochka
Дата 20.12.2004, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


Профиль
Группа: Участник Клуба
Сообщений: 1256
Регистрация: 7.10.2004
Где: Москва

Репутация: нет
Всего: 79



Vit Большое тебе спасибо smile smile smile
И всем кто старался мне помочь. smile


--------------------
user posted image 
PM MAIL ICQ   Вверх
SlaUr
Дата 21.12.2004, 05:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Цитата
Выделенная красным брехня! Для строковых типов ограничений по длинне нет, есть только некомпетентность преподавателей,

Насколько я знаю ограничение строки все же есть (речь идет о Гигабайтах) или я не прав?
PM MAIL   Вверх
Vit
Дата 21.12.2004, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(SlaUr @ 20.12.2004, 20:43)
Насколько я знаю ограничение строки все же есть (речь идет о Гигабайтах) или я не прав?



Да, ограничения типа String - 2 Gb, но ведь тип свой городить не надо для этого! Тов. преподаватель там явно путает типизированные и текстовые файлы, это в типизированных файлах нужен какой-то дериват от shortstring типа string[20], для текстовых файлов - это на фиг не нужно...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
SlaUr
Дата 21.12.2004, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Цитата
Да, ограничения типа String - 2 Gb, но ведь тип свой городить не надо для этого! Тов. преподаватель там явно путает типизированные и текстовые файлы, это в типизированных файлах нужен какой-то дериват от shortstring типа string[20], для текстовых файлов - это на фиг не нужно...

Понятно что преподователь не прав и кстати очень мало преподов действительно знающих и умеющих программировать.
Я знаю только одного.Хотя работаю в универе и с преподавтелями сталкивался когда был администратором класса ,над одним я вообще посмеивался (незлобно) он такую чушь молол по Паскалю.Ну может не чушь но некачественные у него были занятия.

Это сообщение отредактировал(а) SlaUr - 21.12.2004, 05:59
PM MAIL   Вверх
Alex
Дата 16.3.2005, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



smile Vit, я когда читаю задания, которые Yanochka выкладывает, я просто не могу. Было дело, реализовывал я ей программу с типизированными файлами это шоу. Кого учат, просто не понимаю. smile


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.