Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2014, 06:32   #1
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию OpenDialog

2 вопроса.

1 - Как через OpenDialog выбрать выбрать любое количество txt файлов и соедить их в 1, после этого вызвать SaveDialog и сохранить готовый txt.
2 - Как через OpenDialog выбрать txt файл и заменить там текст из edit1 на edit2
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 14.01.2014, 08:29   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Fahman Посмотреть сообщение
1 - Как через OpenDialog выбрать выбрать любое количество txt файлов и соедить их в 1, после этого вызвать SaveDialog и сохранить готовый txt.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
TSIn, TSOut: TStringList;
begin
if OpenDialog1.Execute then begin
  OpenDialog1.Options := [ofAllowMultiSelect]; // включение мультивыбора
  SaveDialog1.DefaultExt := 'txt'; // расширение по умолчанию. Варьируй
  TSIn := TstringList.Create;
  TSOut := TstringList.Create;
  for i := 0 to OpenDialog1.Files.Count - 1 do
    begin
      TSin.LoadFromFile(OpenDialog1.Files[i]);
      TSOut.Text := TSOut.Text + TSIn.Text;
    end;
  if SaveDialog1.Execute then TSOut.SaveToFile(SaveDialog1.FileName);
  TSIn.Free;
  TSOut.Free;
  end;
end;

Цитата:
Сообщение от Fahman Посмотреть сообщение
2 - Как через OpenDialog выбрать txt файл и заменить там текст из edit1 на edit2
Не совсем точно поставлена задача. Какой метод замены? Построчно, или полная замена? Если полная то так

uses StrUtils;

Код:
procedure TForm1.Button1Click(Sender: TObject);
TS: TStringList;
begin
if OpenDialog1.Execute then begin
  TS := TStringList.Create;
  TS.LoadFromFile(OpenDialog1.FileName);
  TS.Text := AnsiReplaceStr(TS.Text, Edit1.Text, Edit2.Text); // меняем все вхождения текста как в Edit1 на текст из Edit2
  if SaveDialog1.Execute then begin
    SaveDialog1.DefaultExt := 'txt';
    TS.SaveToFile(SaveDialog1.FileName);
  end;
  TS.Free;
end;
end;
Если построчно то в цикле проверь и замени так

Код:
for i := 0 to TS.Count -1 do
  if TS[i] = Edit1.Text then TS[i] := Edit2.Text;
doktor255 вне форума Ответить с цитированием
Старый 14.01.2014, 09:43   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

небольшое уточнение!

Цитата:
Код:
if OpenDialog1.Execute then begin
  OpenDialog1.Options := [ofAllowMultiSelect]; // включение мультивыбора
очевидно, что включить возможность мультивыбора нужно ДО Execute
да и для OpenDialog1/SaveDialog1 я бы фильтрацию по расширению txt тоже включил.
Код:
  OpenDialog1.Filter := 'Text files | *.txt';
  SaveDialog1.Filter := 'Text files | *.txt';

Последний раз редактировалось Serge_Bliznykov; 14.01.2014 в 09:46.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.01.2014, 10:12   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

с Execute согласен, немного перепутал последовательность, хотел все операции под Begin подвести. Мультивыбор можно (да и наверное нужно) включить в объект-инспекторе. Ну а по фильтрам неизвестно с какими файлами планирует работать человек, поэтому в OpenDialog я бы вообще не ставил фильтр, а в SaveDialog выставлял согласно расширению открытых файлов. Но это уже тонкости разработки конкретного приложения.

Последний раз редактировалось doktor255; 14.01.2014 в 10:20.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenDialog Ajempp Общие вопросы C/C++ 6 09.06.2011 14:05
БД и OpenDialog alexeybest БД в Delphi 3 17.02.2010 09:34
opendialog blackstersl Общие вопросы Delphi 4 18.09.2008 15:21
opendialog blackstersl Общие вопросы Delphi 1 11.09.2008 18:23
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53