Autor Beitrag
Roboman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Di 18.07.06 13:24 
Hallo Leute,

ich hab mal wieder ein Problem. Ich habe zwei Memofelder die ich miteinander vergleiche und nun sollen die Zeilen die unterschiedlich sind markiert werden nach dem Vergleich. Aber wie? Habt ihr ne Ahnung wie dasgeht?

Gruß aus der Eifel
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.07.06 13:26 
Mit Memos würde ich das nicht machen.
Nimm zwei Listboxen und nutze die Eigenschaft MultiSelect. Sowas kennt TMemo nämlich nicht.
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Di 18.07.06 14:44 
Hi, danke für den Hinweis,
jetzt hab ich alles mit den Memofeldern gemacht und müsste das komplette Programm ummodulieren, aber danke, fürs nächste Mal weiß ich dann bescheid.

Also, wie ich den Text per Mouse-Click markiere weiß ich, aber jetzt müsste das doch auch gehen, dass wenn beide Memo-Felder miteinander Zeile für Zeile miteinander vergleiche, das die unterschiedlichen Zeilen irgendwie markiert oder in einer andern Farbe sind.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 18.07.06 15:31 
Eine Farmbarkierung geht nicht mit dem Memo. Da wirst du das TRichEdit brauchen. kannst du aber meines wissens ziemlich genau wie ein Memo verwenden, wirst deinen Quelltext also kaum ändern müssen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Di 18.07.06 18:07 
Danke für den Hinweis.

Werde alles mal ausprobieren.
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Mi 19.07.06 10:12 
Titel: RichEdit1 und RichEdit2 vergleichen; Unterschied markieren
Hallo Leute,
also, ich sitze immer noch dran, aber irgendwie funzt es nicht. Hab den Titel mal geändert. Also, vielleicht hab ich mich auch nicht korrekt ausgedrückt. Ich vergleiche jetzt zwei RichEdit-Felder miteinander und die Zeilen die unterschiedlich sind sollen in einer anderen Farbe dargestellt werden. Habt ihr ne Ahnung wie ich das realisieren kann?

Hab schon von Memo auf RichEdit umgestellt, war kein großer Akt. Die unterschiedlichen Zeilen werden erkannt aber wie zum Henker kann ich die Farben der unterschiedlichen Zeilen ändern. Kurze Beispiel:

RichEdit1 RichEdit2
P1:=10 P1:=10
P2:=12 P2:=11
P3:=15 P3:=15

P2 ist unterschiedlich und die Zeile sollte in beiden RichEdits dann z. B. rot markiert sein, aber wie? Mensch, schon 30°C und das Thermometer soll noch weiter steigen.

Wünschen allen noch einen schönen Tag und ne Klimaanlage in der Nähe. ;)
Sy-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177



BeitragVerfasst: Mi 19.07.06 10:58 
Du musst mit den Zeichen arbeiten, dh: du musst erstmal ausrechenen, wo die zeile anfängt und wo sie enden

ausblenden Delphi-Quelltext
1:
2:
3:
rich.SelStart:=0// der Anfang
rich.Sellength:=10// das Ende
rich.SelAttributes.Color:=clblue; // die Farbe


ausrechenen kannste es mit hilfe von:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
anfang:=0; ende:=0;
for i := 0 to deineZeile do
begin
  if(i=deineZeile)then
    ende:=length(rich.lines[i]);
  else
    anfang:=anfang+length(rich.lines[i]); //kann sein, dass du jeweils +1 nehmen musst, dass weiß ich nichtmehr (wegen dem Enterzeichen)
end;


Code ist ungetestet
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 19.07.06 11:00 
Da es schon heiß ist mach ichs kurz Suche in: Delphi-Forum, Delphi-Library RICHEDIT ZEILE FORMATIEREN ;)

Aber checke deinen Algo nochmal durch, das ist nicht so trivial. Du musst immer komplett durchgehen. Ansonsten kann es zu Problemen kommen falls irgendwo mal eine Zeile fehlt oder eine ganz neue drin ist. Besonders lustig wird das ganze natürlich erst bei Baumstrukturen, sowas durfte ich machen, für einen Vergleich von zwei Verzeichnissen, dann geht das Ganze nämlich noch auf rekursives Level :-(
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Mi 19.07.06 13:44 
Servus Leute,
hab hinbekommen, vielen Dank für die Anregungen! Die Lösung ist zwar ein wenig umständlich und für viele wohl die meisten wohl einfach nur grauenhaft!! :oops:

Hier meine Vorgehensweise :

Ich habe insgesamt zigtausend Editfelder (brauche ich auch alle), die sollen alle in eine txt-Datei. Mach ich über zwei Memo-Felder, da ich auch ne Anzeige brauch zum Ausdrucken usw.

Ich lade jetzt je eine txt-Datei in ein Memo hinein und schreibe diese dann Zeile für Zeile in ein RichEdit. Dabei wird direkt verglichen ob sie identisch sind oder nicht und dementsprechend kommt die Formatierung dann dran. Passt, klappt, mehrfach getestet, bin zufrieden (nicht ganz - hätte es gerne eleganter gelöst, aber es funktioniert) Wenn die Zeit gekommen ist, wird dieser Teilbereich überarbeitet.

So, jetzt ab erst mal in nen Biergarten und ne schöne kühle Cola genießen.

Vielen Dank an alle die mich hier beraten haben. :beer: