Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeilennummer einer Zeichenkette heausfinden? (https://www.delphipraxis.net/73039-zeilennummer-einer-zeichenkette-heausfinden.html)

capo 11. Jul 2006 12:24


Zeilennummer einer Zeichenkette heausfinden?
 
HIHO :-D ,

wie kann ich in einem memo die zeilennummer einer zeichenkette heausfinden?
kommt nur 1x vor.


gruss
capo

arbu man 11. Jul 2006 12:31

Re: Zeilennummer einer Zeichenkette heausfinden?
 
Delphi-Quellcode:
  zeilennumer:= memo.lines.indexof('der zeilen text');

fkerber 11. Jul 2006 12:33

Re: Zeilennummer einer Zeichenkette heausfinden?
 
Hi!

Schau mal:


Zitat:

Aktuelle Zeile und Spalte in Memos

Durch zwei Aufrufe der API-Funktion "SendMessage" erfaehrt man die aktuelle Position des Cursors in Memo- oder RichEditfeldern. Im folgenden Beispiel werden die zwei Aufrufe im OnKeyDown-Ereignis ausgefuert und die Angabe von Spalte und Zeile in einer StatusBar angezeigt.

Delphi-Quellcode:
Procedure TForm1.Memo1KeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
Var Zeile, Spalte, ChrVor: LongInt;
Begin
  Zeile := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, SelStart, 0);
  ChrVor:= SendMessage(Memo1.Handle, EM_LINEINDEX, Zeile, 0);
  Spalte:= SelStart - ChrVor + 1;
  StatusBar1.SimpleText:= SysUtils.Format('%4d:%4d', [Zeile + 1, Spalte]);
End;


Quelle: http://www.rudolf-software.de/delphitips.html


Ciao Frederic

capo 11. Jul 2006 12:38

Re: Zeilennummer einer Zeichenkette heausfinden?
 
hi

irgendwie bekomme ich immer -1 angezeigt, mach ich was falsch?

Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
var
zeilennumer:integer;
begin
zeilennumer:= advmemo1.lines.indexof('Test');
showmessage(inttostr(zeilennumer));
end;

capo 11. Jul 2006 12:40

Re: Zeilennummer einer Zeichenkette heausfinden?
 
danke, aber ich muss doch zuerst die position des wortes (zeichenkette) haben dann will ich den cursor an die stelle setzen

xaromz 11. Jul 2006 12:56

Re: Zeilennummer einer Zeichenkette heausfinden?
 
Hallo,

zuerst mal, Du kannst Deine Beiträge editieren.

Nun zu Deinem Problem: IndexOf gibt nur eine Zeilennummer zurück, wenn der übergebene String exakt der Zeile entspricht. Das wird bei Dir nicht der Fall sein.
Versuch mal Folgendes:
Delphi-Quellcode:
procedure TForm2.Button3Click(Sender: TObject);
var
  ZeilenNummer: Integer;  
begin
  for ZeilenNummer := 0 to advmemo1.lines.Count - 1 do // Sämtliche Zeilen durchgehen
    if Pos('Test', advmemo1.Lines[ZeilenNummer]) > 0) then // ist gesuchter Begriff in Zeile?
    begin
      ShowMessage(IntToStr(ZeilenNummer)); // Ausgeben..
      Exit; // ...und raus
    end;

  ShowMessage('Zeile nicht gefunden!'); // Nichts gefunden
end;
Gruß
xaromz

capo 11. Jul 2006 13:09

Re: Zeilennummer einer Zeichenkette heausfinden?
 
danke für deine hilfe und erklärungen, das funktioniert :-D

capo 11. Jul 2006 18:24

Re: Zeilennummer einer Zeichenkette heausfinden?
 
weiß jemand warum mit dem beispiel oben kein datum ausgelesen wird in dem format?
21:05:57
bekomme die meldung:
Zitat:

---------------------------
Data
---------------------------
Zeile nicht gefunden!
---------------------------
OK
---------------------------
ist doch kein unterschied ob strings integer, oder doch?:gruebel:
gruss
capo

marabu 11. Jul 2006 19:34

Re: Zeilennummer einer Zeichenkette heausfinden?
 
Hi,

wolltest du nicht das gefundene Wort markieren?

Delphi-Quellcode:
function FindFirst(memo: TMemo; search: String): Boolean;
var
  iStart: Integer;
begin
  search := AnsiLowercase(search);
  with memo do
  begin
    iStart := Pos(search, AnsiLowercase(Text));
    Result := iStart > 0;
    if Result then
    begin
      SelStart := Pred(iStart);
      SelLength := Length(search);
    end;
  end;
end;
Grüße vom marabu

capo 12. Jul 2006 09:06

Re: Zeilennummer einer Zeichenkette heausfinden?
 
hallo marabu

stimmt, ich wollte dann sogar die ganze zeile markieren.
wie das mit dem memo gemacht wird hab ich schon rausbekommen.
ich muss nur noch wissen warum das beispiel oben keine uhrzeit findet.
funktioniert das bei dir?

gruss vom capo


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Seite 1 von 2  1 2      

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