Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ersten 2 Zeichen einer Memo.line (https://www.delphipraxis.net/78854-ersten-2-zeichen-einer-memo-line.html)

HartiMcFly 12. Okt 2006 06:37


Ersten 2 Zeichen einer Memo.line
 
Schönen guten Morgen.

Ich glaube für mich ist es gerade noch etwas zu früh um zu programmieren :-)

ich gehe mit Hilfe einer Schleife alle Lines eines Memofeldes ab, und suche bis jetzt dort nach dem ersten Zeichen
Delphi-Quellcode:
          begin
       if memo1.lines[i][1] = 'I' then
         memo2.lines.add(memo1.lines[i]);
     end;
Leider hat sich jetzt etwas verändert, so dass ich nun nach den ersten beiden Zeichen suchen muß.
Kann ich meine Schleife erweitern, dass er mir nach den Zeiche 'ID' sucht?

Danke Patrick

uwewo 12. Okt 2006 06:46

Re: Ersten 2 Zeichen einer Memo.line
 
Wie wäre es mit

Delphi-Quellcode:
  Copy(Memo1.lines[i],0,2);
liefert die ersten beiden Zeichen zurück

jokriege 12. Okt 2006 06:51

Re: Ersten 2 Zeichen einer Memo.line
 
Hallo HartiMcFly, versuche es einmal mit der Funktion "leftStr" so:

Delphi-Quellcode:
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    if leftstr(Memo1.Lines[i],2) = 'ID' then
      Memo2.Lines.Add(Memo1.Lines[i]);
  end;

Um die Funktion leftStr nutzen zu können, musst Du StrUtils bei uses einfügen.

mkinzler 12. Okt 2006 06:52

Re: Ersten 2 Zeichen einer Memo.line
 
Müßte imho
Delphi-Quellcode:
Copy(Memo1.lines[i],1,2);
heißen, da Strings mit Index1 beginnen (Index 0 ist die Länge des Strings)

marabu 12. Okt 2006 06:56

Re: Ersten 2 Zeichen einer Memo.line
 
Hi,

Copy() ist effizienter und LeftStr() hat einen höheren Dokumentationscharakter - aber auf was ich eigentlich hinweisen möchte ist der Startindex 0 in Uwes Copy-Statement: der Startindex sollte 1 sein. Wenn bei 0 trotzdem das erwartete Ergebnis erzielt wird, dann aufgrund eines implementationsbedingten Nebeneffektes - und das muss ja nicht sein.

Freundliche Grüße vom marabu

uwewo 12. Okt 2006 06:59

Re: Ersten 2 Zeichen einer Memo.line
 
Zitat:

Zitat von mkinzler
Müßte imho
Delphi-Quellcode:
Copy(Memo1.lines[i],1,2);
heißen, da Strings mit Index1 beginnen (Index 0 ist die Länge des Strings)

Hmm, habe es gerade ausprobiert scheinbar hast Du recht, allerdings liefert

Delphi-Quellcode:
Copy(Memo1.lines[0],0,2);
und
Delphi-Quellcode:
Copy(Memo1.lines[0],1,2);
das gleiche Ergebnis.

erst ab
Delphi-Quellcode:
Copy(Memo1.lines[0],2,2);
wird der 2te un 3te Buchstabe zurückgegeben. :shock:

HartiMcFly 12. Okt 2006 07:04

Re: Ersten 2 Zeichen einer Memo.line
 
Zitat:

Zitat von jokriege
Hallo HartiMcFly, versuche es einmal mit der Funktion "leftStr" so:

Delphi-Quellcode:
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    if leftstr(Memo1.Lines[i],2) = 'ID' then
      Memo2.Lines.Add(Memo1.Lines[i]);
  end;

Um die Funktion leftStr nutzen zu können, musst Du StrUtils bei uses einfügen.


Damit funktionier es wunderbar...

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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