Avatar billede janbb Juniormester
03. november 2003 - 02:49 Der er 5 kommentarer og
3 løsninger

Erstat funktion i Memo lissom i notepad

Ja spm taler nok for sig selv ?.Altsaa at man for et ord der går igen i teksten kan erstatte ordet med et andet ord i hele teksten i en memo.Håber der er nogen der har et eksempel.
Avatar billede dkn Nybegynder
03. november 2003 - 03:48 #1
ved brug af replace dialogen:


procedure TForm1.REPLACEClick(Sender: TObject);
begin
  REPLACEDIALOG1.Execute;
end;

procedure TForm1.REPLACEDIALOG1REPLACE(Sender: TObject);
var
  CursorPos : TPoint;
  I, J, SkipChars, PosReturn : integer;
begin
  if frREPLACE in REPLACEDIALOG1.Options then
    Memo1.SelText := REPLACEDIALOG1.REPLACEText
  else if frREPLACEAll in REPLACEDIALOG1.Options then
  begin
    CursorPos := Memo1.CaretPos;
    for I := CursorPos.Y + 1 to Memo1.Lines.Count do
    begin
      PosReturn := Pos(REPLACEDIALOG1.FindText,Memo1.Lines[I]);
      if PosReturn <> 0 then
      begin
        SkipChars := 0;
        for J := 0 to I - 1 do
          SkipChars := SkipChars + Length(Memo1.Lines[J]);
        SkipChars := SkipChars + (I*2);
        SkipChars := SkipChars + PosReturn - 1;

        Memo1.SelStart := SkipChars;
        Memo1.SelLength := Length(REPLACEDIALOG1.FindText);
        Memo1.SelText := REPLACEDIALOG1.REPLACEText;
      end;
    end;
  end;
end;

procedure TForm1.REPLACEDIALOG1Find(Sender: TObject);
var
  I, J, PosReturn, SkipChars: Integer;
  CursorPos : TPoint;
begin
  CursorPos := Memo1.CaretPos;
  for I := CursorPos.Y + 1 to Memo1.Lines.Count do
  begin
    PosReturn := Pos(REPLACEDIALOG1.FindText,Memo1.Lines[I]);
    if PosReturn <> 0 then
    begin
      SkipChars := 0;
      for J := 0 to I - 1 do
        SkipChars := SkipChars + Length(Memo1.Lines[J]);
      SkipChars := SkipChars + (I*2);
      SkipChars := SkipChars + PosReturn - 1;

      Memo1.SelStart := SkipChars;
      Memo1.SelLength := Length(REPLACEDIALOG1.FindText);
      Break;
    end;
  end;
end;
Avatar billede stoney Nybegynder
03. november 2003 - 06:51 #2
eller bare

erstatter s med t


Memo1.Text := StringReplace(Memo1.Text, 's', 't', [rfReplaceAll]);

Stoney
Avatar billede janbb Juniormester
03. november 2003 - 09:28 #3
Det må jeg lige kigge på så vender jeg tilbage - foreløbig tak.
Avatar billede janbb Juniormester
04. november 2003 - 00:03 #4
dkn:  REPLACEDIALOG1 undeclared identifier ? det er muligt det er banalt men jeg kan ikke umiddelbart gennemskue hvordan den skal erklæres og der er jo kun de 3 nævnte procedurer med 'andre' navne er det noget fre en unit ?.

Stoney: har vistnok 'leget' med den  lille programstump du nævner i anden sammenhæng (listboxe ?) men har ikke kunnet få den til at virke (listboxproblemet fik jeg dog løst via en anden proc., hvor man vistnok sikrer sig at strenglænden bliver fixeret).Kigger lidt mere på det men er taknemmelig for lidt uddybning hvis det kan hjælpe.
Avatar billede dkn Nybegynder
04. november 2003 - 00:15 #5
REPLACEDIALOG1 er den en dialog som eksistere under Dialogs tapen
Avatar billede janbb Juniormester
04. november 2003 - 00:36 #6
okey - prøver igen .)
Avatar billede janbb Juniormester
04. november 2003 - 01:34 #7
dkn: skal memo kobles til nogen af procedurerne ? med onchange eller noget.
Der er ikke rigtig nogen effect udover at dialogboxen kommer op når man kalder 'execute'.Har kigget i delphihjælpen, men er ikke helt kommet nogen vegne i dag.Har sat en memo ind i formen og en knap som jeg har forbundet med executeproceduren - hvad mangler jeg ?.
Avatar billede janbb Juniormester
04. november 2003 - 20:24 #8
dkn: Ja det er jo nok mig der ikke er klog nok til at regne ud hvorfor der er een execute til alle dialogrutinerne som altså ikke kan kobles på memoen uden lidt instruktion.Havde ikke forestillet mig det var så vanskeligt.Men er da blevet klogere og derfor fortjener du da nogle points, men jeg må tage nogen af dem tilbage.Håber det er ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester