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

Поиск:

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


Fallen Angel
***


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

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



Помогите пожалуйста. smile
Задание
Что то я не понимаю что от меня хотят, помогите мне smile


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



Задача 1

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


Запихиваешь текст в Мемо ( Memo1.Lines.LoadFromFile(filename) ). Потом считываешь построчно, пробегаешь циклом удаляя пробелы, и записываешь новую строку в новый ММемо.
Понятно?


--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Yanochka
Дата 18.12.2004, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


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

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



не, не понятно, не могу по алгоритму составить текст функции для удаления лишних пробелов в одной строке текста.
Добавлено @ 18:36
у меня есть первое решение, так мне выдает ошибку после того как текст введен, и не удаляет пробелы


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



for k:=1 to Memo1.LinesCount do
for i:=1 to Lendth(Memo1.Lines[k]) do
begin
if copy(Memo1.Lines[k],i,1)=' ' then del(Memo1.Lines[k],i,1);
end;
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Yanochka
Дата 18.12.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


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

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



У меня вот как
function Stroka(s:string):string;
var i,k:integer;
begin
k:=length(s);
for i:=1 to k do
while (s[i]=' ') and (s[i+1]=' ') do begin delete(s,i+1,1);
k:=k-1;end;
Stroka:=s;



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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



чуть не дочитал условие smile . Вроде правильно, что не работает?
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Yanochka
Дата 18.12.2004, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


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

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



не знаю smile
Вот смотри что у меня:

Код

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, StdCtrls, System.ComponentModel;

type
 TForm1 = class(TForm)
   OpenDialog1: TOpenDialog;
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   N3: TMenuItem;
   N4: TMenuItem;
   Label1: TLabel;
   Memo1: TMemo;
   Label2: TLabel;
   Label3: TLabel;
   Edit1: TEdit;
   Memo2: TMemo;
   SaveDialog1: TSaveDialog;
   procedure N3Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure N4Click(Sender: TObject);
   procedure N1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 q,w:string;
 f,f1:textfile;
 j,p:integer;

implementation

{$R *.dfm}
function Stroka(s:string):string;
var i,k:integer;
begin
k:=length(s);
for i:=1 to k do
while (s[i]=' ') and (s[i+1]=' ') do begin delete(s,i+1,1);
k:=k-1;end;
Stroka:=s;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
memo2.Clear;
edit1.Text:='';
if opendialog1.Execute then w:=opendialog1.filename;
assignfile(f,w);
if fileexists(w) then begin
reset(f);
memo1.Clear;
edit1.Text:=OpenDialog1.Files.DelimitedText;
while eof(f)<>true do begin readln(f,q); memo1.lines.Append(q);end;
closefile(f);
end else showmessage('Найдите файл!!!');
end;

procedure TForm1.N4Click(Sender: TObject);
begin
j:=memo1.Lines.Capacity;
memo2.Clear;
for p:=0 to j do
memo2.Lines.Append(stroka(memo1.Lines.Strings[p]));
end;

procedure TForm1.N1Click(Sender: TObject);
begin
if SaveDialog1.Execute then  q:=SaveDialog1.FileName;
assignfile(f1,q);
rewrite(f1);
j:=memo1.Lines.Capacity;
for p:=0 to j do
writeln(f1,memo1.lines.strings[p]);
closefile(f1)
end;

end.



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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



вместо while надо if
Добавлено @ 18:56
алгоритм правильный: найти пробел - если за ним еще пробел то удалить предыдущий и вернуть позицию на 1 назад
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Vit
Дата 19.12.2004, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Удаление двойных пробелов:

Код

while pos('  ',s)>0 do s:=ReplaceString(s, '  ',' ',[rfReplaceAll])

Добавлено @ 05:07
Не самое лучшее решение...

Код

procedure TForm1.N3Click(Sender: TObject);
begin
Application.Terminate;
end;


Лучше так:

Код

procedure TForm1.N3Click(Sender: TObject);
begin
 Close;
end;



--------------------
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   Вверх
Vladimir13
Дата 19.12.2004, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



есть решение:
for i:=1 to Memo1.LinesCount do
begin
for j:=1 to length( Memo1.Lines[i]) do
begin
if copy(memo1.Lines[i],j,1)=' ' and copy(memo1.Lines[i],j+1,1)=' '
then delete(memo1.Lines[i],j+1,1);
end;
Memo2.Lines[i]:=Memo1.Lines[i];
end;
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Vit
Дата 19.12.2004, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Vladimir13, хех... а ошибок то в этом коде... проверяйте границы массивов, потом вылавливать такие ошибки замучаешся - их лучше такие не делать. Да и алгоритм работать будет со сбоями...


--------------------
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   Вверх
Vladimir13
Дата 19.12.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



можно поставить условие
if j= length( Memo1.Lines[i]) and copy(memo1.Lines[i],j,1)=' ' then memo2.Lines[i]:=Memo1.Lines[i]
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Yanochka
Дата 19.12.2004, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fallen Angel
***


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

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



У меня выходит когда хочу запусть на исполнение : Invalid threading model (STAThreadATTribute is required)
потом когда ввожу текст, потом записать пытаюсь тогда ошибка : index was outside the bonus of the array

Это сообщение отредактировал(а) Yanochka - 19.12.2004, 22:41


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

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



что то лучше чем ничто. Прежде чем критиковать - убедись, что то, что ты предложил работает. а мое и подработать можно при желании
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Vit
Дата 20.12.2004, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



Цитата(Yanochka @ 19.12.2004, 13:39)
У меня выходит когда хочу запусть на исполнение : Invalid threading model (STAThreadATTribute is required)
потом когда ввожу текст, потом записать пытаюсь тогда ошибка : index was outside the bonus of the array



А что ты делаешь? И смысл задачи? Это учебная задача или реальная? Если учебная то алгоритм будет такой:

Код

 s:=memo1.text;
 while pos('  ',s)>0 do Delete(s,pos('  ',s),1);
 memo1.Text:=s;


Если реальная то я уже дал тебе решение:

Код

while pos('  ',memo1.text)>0 do memo1.text:=ReplaceString(memo1.text, '  ',' ',[rfReplaceAll])

Добавлено @ 02:12
Цитата(Vladimir13 @ 19.12.2004, 16:57)
что то лучше чем ничто. Прежде чем критиковать - убедись, что то, что ты предложил работает. а мое и подработать можно при желании



Подработать можно, но очень сложно, код неправильно изначально разработан, доработать - это его заново переписать, а решение я уже давал, вот и ещё раз даю...


--------------------
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, 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   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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