AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pos und Zeilenumbrüche???

Ein Thema von Muellermilchtrinker · begonnen am 7. Feb 2010 · letzter Beitrag vom 8. Feb 2010
Antwort Antwort
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

Pos und Zeilenumbrüche???

  Alt 7. Feb 2010, 18:22
Servus DP,

Ich suche so nach einem Wort in einem Memofeld und markiere es.
Delphi-Quellcode:
Memo1.SetFocus;
Memo1.SelStart := Pos(UpperCase(Edit2.Text),UpperCase(Memo1.Text));
Memo1.SelLength := Length(Edit2.Text);
Das Problem ist nun:
Steht das Wort in der ersten Zeile, so wird so markiert (unterstrichen = markierung): Test.
Steht das Wort in der zweiten Zeile, so wird so markiert: Test.
Und wenn das Wort in der dritten Zeile steht wird so markiert: Test.
Wie kann ich das umgehen???
Bzw.: Wie kann ich es immer richtig markieren???
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Pos und Zeilenumbrüche???

  Alt 7. Feb 2010, 18:25
Pos liefert einen 1-basierenden StringIndex und SelStart verlangt nach einem 0-basierendem Index.

Lösung: entsprechend umrechen, bzw. ein gewisses Offset dazurechnen


Aber das mit der Verschiebung:
Nicht daß wir hier nochmal soein Problem haben
http://www.delphipraxis.net/internal...t.php?t=172659

Prüfe mal bitte bei dir die Zeilenumbrüche, welche in deinem Programm so vorkommen.
(bin grad mit 'ner RegEx-Komponente ausgelastet ... könnte aber später mal da reinsehn)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 17:27
Wie müsste ich des umrechnen???
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 17:35
Wenn es wirklich nur der Zeilenumbruch ist, dann

Memo1.SelStart := Pos() + (GetLineFeedLength(Memo1.Text) - GetLineFeedLength(Memo1_intern)) * ZeileVon(Pos());


Memo1.SelStart := Pos(...) + ZähleZeilenumbrüche(Copy(Memo1.Text, 1, Pos(...) - 1);
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 17:49
oder so:
Delphi-Quellcode:
mTmp := StringReplace( Memo1.Text, #13#10, #13, [ rfReplaceAll ] );
Memo1.SelStart := Pos( UpperCase( Edit2.Text ), UpperCase( mTmp ) ) - 1;
Memo1.SelLength := Length( Edit2.Text );
oder (für eine generelle Verwendung):
Delphi-Quellcode:
function SelectTextInMemo( AText : string; AMemo : TMemo ) : boolean;
var
  mTmp : string;
  tTmp : string;
  mPos : integer;
begin
  Result := False;
  // CRLF ersetzen mit CR
  mTmp := UpperCase( StringReplace( AMemo.Text, #13#10, #13, [ rfReplaceAll ] ) );
  // Falls im Suchtext auch ein CRLF auftaucht ;-)
  tTmp := UpperCase( StringReplace( AText, #13#10, #13, [ rfReplaceAll ] ) );
  mPos := Pos( tTmp, mTmp );
  if mPos > 0 then
    begin
      AMemo.SelStart := mPos - 1; // Sel startet bei 0 ;-)
      AMemo.SelLength := Length( tTmp );
      Result := True;
    end;
end;
edit: SelStart korrigiert ... und jetzt als function mit Rückgabewert True, wenn der Suchtext gefunden wurde
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 17:57
Hab die Lösung von Sir Rufo genommen.
Funktioniert (man muss halt noch 1 bei Selstart abziehen )
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 18:10
Aber ganz sicher, daß es sich um ein TMemo handelt?
Konnte diesen Fehler es mit diesem nicht bestätigen.
Hab also nur Probleme mit einem TRichEdit.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 18:19
Ich hatte zuerst ein Memo.
Dann hab ich auf RichEdit umgestellt und wollte nicht alle Namen ändern, dann hab ich einfach Memo1 als Name gesetzt.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: Pos und Zeilenumbrüche???

  Alt 8. Feb 2010, 19:37
Dann ist es klar.

Eine Lösung und der Grund steht dann im anderem Thread.
http://www.delphipraxis.net/internal...t.php?t=172659
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz