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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Как поменять? Плиз очень надо! 
:(
    Опции темы
pomogite
  Дата 8.5.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как в txt файле заменить это -  "(что то по русский)"  на (Russian) ? 


M
Girder
Название темы - должно отражать её суть!
 
PM MAIL   Вверх
Guedda
Дата 8.5.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Код

var
  Sl : TStringList;
  i : Integer;
begin
//...
Sl.LoadFromFile('текстовый_файл.txt');
for i := 0 to Sl.Count - 1 do
  StringReplace(Sl[i], 'что_то по-русски', 'Russian', [rfReplaceAll]);
Sl.SaveToFile('текстовый_файл.txt');
end;

А вообще тема неоднократно поднималась. Пользуйтесь поиском...  

Это сообщение отредактировал(а) Guedda - 8.5.2006, 12:25


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Sunr1se
Дата 8.5.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Создать множество, в котором будут все русские буквы, затем перебирать весь текст на наличие русских букв (if s in rus, где rus - это то самое множество). Неудобный и некрасивый способ, но больше ничего в голову не приходит. Предположим, что текст хранится в переменной s. Тогда механизм такой:

Код

procedure TForm1.Button1Click(Sender: TObject);
var s: string;
i, RusPosition: integer;
FindRus: boolean;
begin
for i := 1 to Length(S) do
  begin
  if s[i] in rus then
    begin
    RusPosition := i;
    FindRus := true;
    end
  else
    begin
     if FindRus = true then
     FindRus := false;
     Delete(s, RusPosition, i);
     Insert('Russian', s, RusPosition);
    end;
 end;
end;


Ну и перед этим опишешь множество русских символов, которое называется rus. 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
pomogite
  Дата 8.5.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Guedda, 
Твой код выдаёт ошибку 
Sunr1se, 
А как описать множество? 

Вот что я пишу 
Код


procedure TForm1.Button1Click(Sender: TObject);
var
  Sl:TStringList;
  i:Integer;
begin
//...
Sl.LoadFromFile(Edit1.text);
for i := 0 to Sl.Count - 1 do
  StringReplace(Sl[i], Edit3.text,Edit4.text, [rfReplaceAll]);
Sl.SaveToFile(Edit2.text);
end;

end.

 

Это сообщение отредактировал(а) pomogite - 8.5.2006, 13:02
PM MAIL   Вверх
Sunr1se
Дата 8.5.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



rus = ['а'..'я', 'А'..'Я']; 


Хотя лучше сделать так:

Код

if s[i] in ['а'..'я', 'А'..'Я'] then
 

Это сообщение отредактировал(а) Sunr1se - 8.5.2006, 13:17
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А где описывать-то в VAR или где? 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(pomogite @  8.5.2006,  13:16 Найти цитируемый пост)
А где описывать-то в VAR или где?  
 В таком виде в const
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Чё-то не работает 
Код

procedure TForm1.Button1Click(Sender: TObject);
var s: string;
i, RusPosition: integer;
FindRus: boolean;
begin
for i := 1 to Length(S) do
  begin
  if s[i] in rus then
    begin
    RusPosition := i;
    FindRus := true;
    end
  else
    begin
     if FindRus = true then
     FindRus := false;
     Delete(s, RusPosition, i);
     Insert('Russian', s, RusPosition);
    end;
 end;
end;

 
PM MAIL   Вверх
Sunr1se
Дата 8.5.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

procedure TForm1.Button1Click(Sender: TObject);
var s: string;
i, RusPosition: integer;
FindRus: boolean;
begin
for i := 1 to Length(S) do
  begin
  if s[i] in rus then
    begin
    RusPosition := i;
    FindRus := true;
    end
  else
    begin
     if FindRus = true then
        begin
        FindRus := false;
        Delete(s, RusPosition, i);
        Insert('Russian', s, RusPosition);
        end;
    end;
 end;
end; 
 

Это сообщение отредактировал(а) Sunr1se - 8.5.2006, 13:37
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
Guedda
Дата 8.5.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Эх... Выдает ошибку, так как я тебе просто работу данной процедуры привел. Вот она полностью:
Код

var
  Sl : TStringList;
  i : Integer;
begin
Sl := TStringList.Create;
Sl.LoadFromFile('текстовый_файл.txt');
for i := 0 to Sl.Count - 1 do
  StringReplace(Sl[i], 'что_то по-русски', 'Russian', [rfReplaceAll]);
Sl.SaveToFile('текстовый_файл.txt');
Sl.Free;
end;

У меня все работает. 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
pomogite
  Дата 8.5.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



У меня этот код просто копирует то что написано в 1.txt в 2.txt 
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Sl : TStringList;
  i : Integer;
begin
Sl := TStringList.Create;
Sl.LoadFromFile('1.txt');
for i := 0 to Sl.Count - 1 do
  StringReplace(Sl[i], 'что_то по-русски2', 'Russian', [rfReplaceAll]);
Sl.SaveToFile('2.txt');
Sl.Free;
end;
 

Это сообщение отредактировал(а) pomogite - 8.5.2006, 13:50
PM MAIL   Вверх
Guedda
Дата 8.5.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Точно... Опять забыл одну весчь smile
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Sl : TStringList;
  i : Integer;
  s : string;
begin
Sl := TStringList.Create;
Sl.BeginUpdate;
Sl.LoadFromFile('1.txt');
for i := 0 to Sl.Count - 1 do
begin
  s := Sl[i];
  StringReplace(s, 'что_то по-русски2', 'Russian', [rfReplaceAll]);
  Sl[i] := s;
end;
Sl.SaveToFile('2.txt');
Sl.EndUpdate;
Sl.Free;
end;
 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
pomogite
Дата 8.5.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всё равно только копирует! 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Значит в 1.txt нет фразы 'что_то по-русски2', каторую код заменяет на 'Russian'

Добавлено @ 14:09 
Да и код не правильный smile

Код
procedure TForm1.Button1Click(Sender: TObject);
var
  Sl : TStringList;
  s, tmp : string;
begin
Sl := TStringList.Create;
Sl.LoadFromFile('1.txt');
tmp:= Sl.Text;
Sl.Clear;
s:= StringReplace(tmp, 'что_то по-русски2', 'Russian', [rfReplaceAll]);
Sl.Text:= s;
Sl.SaveToFile('2.txt');
Sl.Free;
end;
  

Это сообщение отредактировал(а) Poseidon - 8.5.2006, 14:10


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ага всё работает спасибо приогромное!  smile  
PM MAIL   Вверх
Guedda
Дата 8.5.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

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



Цитата(Poseidon @  8.5.2006,  15:06 Найти цитируемый пост)
Да и код не правильный smile

Из этого топика брал:
http://forum.vingrad.ru/index.php?showtopi...st&p=660001 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Romikgy
Дата 8.5.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



А так нельзя разве?
Код

Sl := TStringList.Create;    
Sl.LoadFromFile('1.txt');    
Sl.Text:= StringReplace(Sl.Text, 'что_то по-русски2', 'Russian', [rfReplaceAll]);    
Sl.SaveToFile('2.txt');    
Sl.Free;
 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Poseidon
Дата 8.5.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Можно, но с использование переменных более понятнее. 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как сделать чтоб удалялось слово введённое в Edit1?
вот в этом коде 
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Button2: TButton;
    Button3: TButton;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    Button4: TButton;
    Panel2: TPanel;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  f:textfile;
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);




var
  Sl : TStringList;
  s, tmp : string;
  i:word;

begin
  for i:=0 to form1.ComponentCount-1 do
if (form1.Components[i] is tedit) then if (form1.Components[i] as tedit).Text='' then
begin
showmessage('Заполнены не все поля!');
exit;
end;



Sl := TStringList.Create;
Sl.LoadFromFile(Edit3.Text);
tmp:= Sl.Text;
Sl.Clear;
s:= StringReplace(tmp, Edit1.Text, Edit2.Text, [rfReplaceAll]);
Sl.Text:= s;
Sl.SaveToFile(Edit4.Text);
Sl.Free;
end;


procedure TForm1.Button2Click(Sender: TObject);

begin
if OpenDialog1.Execute then
 AssignFile(f,OpenDialog1.FileName);
Edit3.Text:=OpenDialog1.FileName;

end;

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

procedure TForm1.Button5Click(Sender: TObject);
begin
Form2.show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
 AssignFile(f,OpenDialog1.FileName);
Edit4.Text:=OpenDialog1.FileName;
end;

end.
 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(pomogite @  8.5.2006,  15:50 Найти цитируемый пост)
А как сделать чтоб удалялось слово введённое в Edit1?
 Удалялось откуда?
Удалялось в какой процедуре?
 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



При нажатии Button1 и например включеном чек боксе 
PM MAIL   Вверх
pomogite
Дата 8.5.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Стиралось вообще в тхт файле 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Код
procedure TForm1.Button1Click(Sender: TObject);
var S: TStrings;
begin
if CheckBox1.Checked
then
  begin
  S := TStringList.Create;
  S.LoadFromFile('1.txt');
  S.Text:= StringReplace(S.Text, Edit1.Text, '', [rfReplaceAll]);
  S.SaveToFile('1.txt');
  S.Free;
  end;
end;
  

Это сообщение отредактировал(а) Poseidon - 8.5.2006, 16:18


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а как сделать чтоб по нажатию одной и той же кнопки было если удалять то удалять а если заменить знач только заменить... 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



А как ты указываешь, когда удалять, а когда заменить?

И это... один топик - один вопрос! 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pomogite
Дата 8.5.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Poseidon @  8.5.2006,  16:24 Найти цитируемый пост)
А как ты указываешь, когда удалять, а когда заменить?


Код

if checkbox1.Checked=true/false then

 
PM MAIL   Вверх
Poseidon
Дата 8.5.2006, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Код
procedure TForm1.Button1Click(Sender: TObject);
var S: TStrings;
begin
S := TStringList.Create;
S.LoadFromFile('1.txt');
if CheckBox1.Checked
  then S.Text:= StringReplace(S.Text, Edit1.Text, '', [rfReplaceAll]);
  else S.Text:= StringReplace(S.Text, 'что_то по-русски2', 'Russian', [rfReplaceAll]);    
S.SaveToFile('1.txt');
S.Free;
end; 
 

Это сообщение отредактировал(а) Poseidon - 8.5.2006, 16:32


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Страницы: (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.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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