AGB  ·  Datenschutz  ·  Impressum  







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

Compare String Funktion

Ein Thema von julchen · begonnen am 26. Jan 2021 · letzter Beitrag vom 9. Feb 2021
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#1

AW: Compare String Funktion

  Alt 27. Jan 2021, 11:09
StartsWith ?
  Mit Zitat antworten Zitat
julchen

Registriert seit: 20. Mär 2008
115 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Compare String Funktion

  Alt 27. Jan 2021, 13:59
Mein erster Versuch.
In den Labels wird der extrahierte String angezeigt.
Soweit funktioniert es.
Aber das if wird nicht weiter durchlaufen.


Code:
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
vergleich1, vergleich2: string;
begin
    for i := Memo2.Lines.Count - 1 downto 0 do
    begin
       vergleich1 := Copy(Memo2.Lines.Text, 1, 20);
       vergleich2 := Copy(Memo2.Lines.Text, 1, 20);

       Label1.Caption := vergleich1;
       Label2.Caption := vergleich2;

       if (vergleich1 <> vergleich2) then begin
         Memo2.Lines[i] := '#13#10';
       end;
    end;
end;
Kollegin: Am Wochenende wird mein PC immer langsamer! Liegt das am Strom?
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#3

AW: Compare String Funktion

  Alt 27. Jan 2021, 14:12
vergleich1 := Copy(Memo1.Lines.Text, 1, 20);
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#4

AW: Compare String Funktion

  Alt 27. Jan 2021, 14:22
Du vergleichst in der Schleife jedesmal die ersten 20 Zeichen des gesamten Textes mit den ersten 20 Zeichen des gesamten Textes. Wie soll das jemals <> werden?

Wahrscheinlich meinst etwas in der Art
Delphi-Quellcode:
       vergleich1 := Copy(Memo2.Lines[i], 1, 20);
       vergleich2 := Copy(Memo2.Lines[i-1], 1, 20);
Wobei du aufpassen musst wenn du unten angekommen bist, denn da gibt es irgendwann kein i-1 mehr.

Zitat:
Delphi-Quellcode:
       if (vergleich1 <> vergleich2) then begin
         Memo2.Lines[i] := '#13#10';
Damit würdest du die aktuelle Zeile mit einer Leerzeile überschreiben, also den bisherigen Inhalt entfernen.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#5

AW: Compare String Funktion

  Alt 27. Jan 2021, 15:27
Warum 20 Zeichen ?
Wäre es nicht besser und sicherer nach irgendeinem eindeutigen Delimiter zu suchen ?
Z.B. "):"

http://docwiki.embarcadero.com/Libra.../de/System.Pos
Delphi-Quellcode:
    LPos1 := Pos( AText1, '):');
    LPos2 := Pos( AText2, '):');
    if LPos1 = LPos2 then
    begin
        Result := MussEchtVergleichen( AText1, AText2);
    end
    else
        Result := False;

Das würde auch den Vergleich beschleunigen, wenn nämlich die Positionen unterschiedlich sind, dann muss es <> sein, und man braucht nicht mehr echt zu vergleichen (was teuer ist).

Geändert von Rollo62 (27. Jan 2021 um 15:30 Uhr)
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#6

AW: Compare String Funktion

  Alt 27. Jan 2021, 18:02
Delphi-Quellcode:
procedure TForm1.Test;
 var I:Integer; TmpList:TStringList; S1,S2:String; LeerzeileImSinn:Boolean;
begin
  TmpList:=TStringList.Create;
  S1:=''; S2:=''; LeerzeileImSinn:=False;
  for I:=0 to Memo2.Lines.Count - 1 do
   begin
     if (Memo2.Lines[I] > '') then
      begin
        S1:=Copy(Memo2.Lines[I], 1, Pos(':', Memo2.Lines[I]));
        if LeerzeileImSinn then
         begin
           if (S1 <> S2) then
            begin
              TmpList.Add('');
              S2:=S1;
              LeerzeileImSinn:=False;
            end;
         end
        else
         S2:=S1;
        TmpList.Add(Memo2.Lines[I]);
      end
     else
      LeerzeileImSinn:=True;
   end;

  Memo2.Lines.Assign(TmpList);

  TmpList.Free;
end;
  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 05:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz