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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2015, 16:15   #1
vasyabah2015
 
Регистрация: 27.07.2015
Сообщений: 5
По умолчанию Помогите переписать c Delphi на с++

Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
rdReplaceDialog: TReplaceDialog;
moText: TMemo;
procedure FormCreate(Sender: TObject);
procedure rdReplaceDialogFind(Sender: TObject);
procedure rdReplaceDialogReplace(Sender: TObject);
private
{ Private declarations }
FI, FPosReturn:integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
rdReplaceDialog.Execute;
end;
procedure TForm1.rdReplaceDialogFind(Sender: TObject);
var
I, J, PosReturn, SkipChars: integer; S,SerchStr:string;
begin
for I := FI to moText.Lines.Count do
begin
if FPosReturn=0 then S:=moText.Lines[I]  else S:=copy(moText.Lines[I],FPosReturn+1,Length(moText.Lines[I])-FPosReturn+1);
if not(frMatchCase in rdReplaceDialog.Options) then
begin
S:=AnsiUpperCase(S);
SerchStr:=AnsiUpperCase(rdReplaceDialog.FindText);
end else  SerchStr:=rdReplaceDialog.FindText;
if frWholeWord in rdReplaceDialog.Options then
PosReturn := Pos(' '+SerchStr+' ',S)
else
PosReturn := Pos(SerchStr,S);
if PosReturn <> 0 then {found!}
begin
SkipChars := 0;
for J := 0 to I - 1 do
SkipChars := SkipChars + Length(moText.Lines[J]);
SkipChars := SkipChars + (I*2);
SkipChars := SkipChars + PosReturn - 1 + FPosReturn;
FPosReturn:=FPosReturn+PosReturn;
moText.SetFocus;
if frWholeWord in rdReplaceDialog.Options then
moText.SelStart := SkipChars+1
else
moText.SelStart := SkipChars;
moText.SelLength := Length(rdReplaceDialog.FindText);
FI:=I;
Break;
end else FPosReturn:=0;
end;
end;
procedure TForm1.rdReplaceDialogReplace(Sender: TObject);
var
SelPos: integer;
begin
if not(frReplaceAll in rdReplaceDialog.Options) then
begin
SelPos := Pos(rdReplaceDialog.FindText, moText.Lines.Text);
if SelPos > 0 then
begin
moText.SelStart := SelPos - 1;
moText.SelLength := Length(rdReplaceDialog.FindText);
moText.SelText := rdReplaceDialog.ReplaceText;
end
else MessageDlg('Текст "'+rdReplaceDialog.FindText+'" не найден', mtError, [mbOk], 0); 
end else
moText.Lines.Text:=StringReplace(moText.Lines.Text,rdReplaceDialog.FindText,rdReplaceDialog.ReplaceText,[rfReplaceAll]);
end;
end.
vasyabah2015 вне форума Ответить с цитированием
Старый 27.07.2015, 16:51   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
на с++
c++ builder?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.07.2015, 17:02   #3
vasyabah2015
 
Регистрация: 27.07.2015
Сообщений: 5
По умолчанию На с++ Builder

Цитата:
Сообщение от min@y™ Посмотреть сообщение
c++ builder?
перепишите на с++ builder пожалуйста

Последний раз редактировалось vasyabah2015; 27.07.2015 в 17:06.
vasyabah2015 вне форума Ответить с цитированием
Старый 27.07.2015, 17:28   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
перепишите на с++ builder пожалуйста
билдер этот код и так сожрёт, без переводу. Компоненты билдера на паскале написаны.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.07.2015, 17:30   #5
vasyabah2015
 
Регистрация: 27.07.2015
Сообщений: 5
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
билдер этот код и так сожрёт, без переводу. Компоненты билдера на паскале написаны.
Мне нужен перевод.Это же обработка событий ReplaceDialog.Подключить так не получилось
vasyabah2015 вне форума Ответить с цитированием
Старый 27.07.2015, 17:43   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Не удалось? Плохо подключаль.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.07.2015, 17:48   #7
vasyabah2015
 
Регистрация: 27.07.2015
Сообщений: 5
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Не удалось? Плохо подключаль.
Мне нужно реализовать поиск и замену в RichEdit через ReplaceDialog без помощи функции FindText.
нашёл на дельфи только
vasyabah2015 вне форума Ответить с цитированием
Старый 27.07.2015, 17:53   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Напиши сам на С++. Нефига копипастить интернеты!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.07.2015, 17:54   #9
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Автор, плохо искал. Я вон с первого разу нашёл то что тебе надо на Зябли++

Код:
void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{
  FindDialog1->FindText = RichEdit2->SelText;
  FindDialog1->Execute();
}
//---------------------------------------------------------------------------
 void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
  int FoundAt, StartPos, ToEnd;
  TSearchTypes Option;
  StartPos=RichEdit2->SelStart;
  if (RichEdit2->SelLength) StartPos+=RichEdit2->SelLength;
  ToEnd = RichEdit2->Text.Length()-StartPos;
  if (FindDialog1->Options.Contains(frWholeWord)) {
    Option << stWholeWord;
  }
  else {
   Option >> stWholeWord;
  }
  if (FindDialog1->Options.Contains(frMatchCase)) {
    Option << stMatchCase;
  }
  else {
    Option >> stMatchCase;
  }
  FoundAt = RichEdit2->FindText(FindDialog1->FindText, StartPos, ToEnd, Option);
  if (FoundAt != -1) {
    RichEdit2->SetFocus();
    RichEdit2->SelStart=FoundAt;
    RichEdit2->SelLength=FindDialog1->FindText.Length();
  }
  else
    ShowMessage("Oaeno '"+ FindDialog1->FindText + "' ia iaeaai" ) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Find(TObject *Sender)
{
  int FoundAt, StartPos, ToEnd;
  TSearchTypes Option;
  StartPos=RichEdit2->SelStart;
  if (RichEdit2->SelLength) 
    StartPos+=RichEdit2->SelLength;
  ToEnd = RichEdit2->Text.Length()-StartPos  ;
  if (ReplaceDialog1->Options.Contains(frWholeWord)) {
    Option << stWholeWord;
  }
  else {
    Option >> stWholeWord;
  }
  if(ReplaceDialog1->Options.Contains(frMatchCase)) {
    Option << stMatchCase;
  }
  else {
    Option >> stMatchCase;
  }
  FoundAt = RichEdit2->FindText(ReplaceDialog1->FindText, StartPos, ToEnd, Option);
  if (FoundAt != -1) {
    RichEdit2->SetFocus();
    RichEdit2->SelStart=FoundAt;
    RichEdit2->SelLength=ReplaceDialog1->FindText.Length();
  }
  else {
    //ShowMessage("Oaeno '"+ ReplaceDialog1->FindText + "' ia iaeaai" ) ;
    return;
  }
  if ( ReplaceDialog1->Options.Contains(frReplaceAll)) {
    ReplaceDialog1Replace(Sender);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn9Click(TObject *Sender)
{
  ReplaceDialog1->FindText = RichEdit2->SelText;
  ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender)
{
  if(RichEdit2->SelText != "") {
    RichEdit2->SelText=ReplaceDialog1->ReplaceText;
  }
  else if (ReplaceDialog1->Options.Contains(frReplace)) {
    //ShowMessage("'" +ReplaceDialog1->FindText+"'");
   return;
 }
 if (ReplaceDialog1->Options.Contains(frReplaceAll)) {
   ReplaceDialog1Find(Sender);
 }
}
Вот ссылка http://www.cyberforum.ru/cpp-builder/thread552345.html
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 27.07.2015, 17:56   #10
vasyabah2015
 
Регистрация: 27.07.2015
Сообщений: 5
По умолчанию

Цитата:
Сообщение от JUDAS Посмотреть сообщение
Автор, плохо искал. Я вон с первого разу нашёл то что тебе надо на Зябли++

Код:
void __fastcall TForm1::BitBtn8Click(TObject *Sender)
{
  FindDialog1->FindText = RichEdit2->SelText;
  FindDialog1->Execute();
}
//---------------------------------------------------------------------------
 void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
  int FoundAt, StartPos, ToEnd;
  TSearchTypes Option;
  StartPos=RichEdit2->SelStart;
  if (RichEdit2->SelLength) StartPos+=RichEdit2->SelLength;
  ToEnd = RichEdit2->Text.Length()-StartPos;
  if (FindDialog1->Options.Contains(frWholeWord)) {
    Option << stWholeWord;
  }
  else {
   Option >> stWholeWord;
  }
  if (FindDialog1->Options.Contains(frMatchCase)) {
    Option << stMatchCase;
  }
  else {
    Option >> stMatchCase;
  }
  FoundAt = RichEdit2->FindText(FindDialog1->FindText, StartPos, ToEnd, Option);
  if (FoundAt != -1) {
    RichEdit2->SetFocus();
    RichEdit2->SelStart=FoundAt;
    RichEdit2->SelLength=FindDialog1->FindText.Length();
  }
  else
    ShowMessage("Oaeno '"+ FindDialog1->FindText + "' ia iaeaai" ) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Find(TObject *Sender)
{
  int FoundAt, StartPos, ToEnd;
  TSearchTypes Option;
  StartPos=RichEdit2->SelStart;
  if (RichEdit2->SelLength) 
    StartPos+=RichEdit2->SelLength;
  ToEnd = RichEdit2->Text.Length()-StartPos  ;
  if (ReplaceDialog1->Options.Contains(frWholeWord)) {
    Option << stWholeWord;
  }
  else {
    Option >> stWholeWord;
  }
  if(ReplaceDialog1->Options.Contains(frMatchCase)) {
    Option << stMatchCase;
  }
  else {
    Option >> stMatchCase;
  }
  FoundAt = RichEdit2->FindText(ReplaceDialog1->FindText, StartPos, ToEnd, Option);
  if (FoundAt != -1) {
    RichEdit2->SetFocus();
    RichEdit2->SelStart=FoundAt;
    RichEdit2->SelLength=ReplaceDialog1->FindText.Length();
  }
  else {
    //ShowMessage("Oaeno '"+ ReplaceDialog1->FindText + "' ia iaeaai" ) ;
    return;
  }
  if ( ReplaceDialog1->Options.Contains(frReplaceAll)) {
    ReplaceDialog1Replace(Sender);
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn9Click(TObject *Sender)
{
  ReplaceDialog1->FindText = RichEdit2->SelText;
  ReplaceDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender)
{
  if(RichEdit2->SelText != "") {
    RichEdit2->SelText=ReplaceDialog1->ReplaceText;
  }
  else if (ReplaceDialog1->Options.Contains(frReplace)) {
    //ShowMessage("'" +ReplaceDialog1->FindText+"'");
   return;
 }
 if (ReplaceDialog1->Options.Contains(frReplaceAll)) {
   ReplaceDialog1Find(Sender);
 }
}
Вот ссылка http://www.cyberforum.ru/cpp-builder/thread552345.html
этот способ я знаю,а мне нужно без RichEdit->FindText RXLIB её плохо поддерживает
vasyabah2015 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переписать код на Си ZeroBlur Помощь студентам 6 24.05.2015 00:54
Помогите переписать процедуру с Delphi на VB anakinskyoker Общие вопросы Delphi 2 18.06.2014 17:46
Помогите переписать код Garmata Помощь студентам 1 26.11.2013 18:53
Переписать с C++ на Delphi iLnes Фриланс 9 09.10.2013 22:30
agent mail SendSMS переписать с Delphi 7 на Delphi 2010 KWN, lnc Компоненты Delphi 0 11.09.2012 14:02