AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Memo lässt Zeilen verschwinden

Ein Thema von aphexx · begonnen am 25. Mär 2011 · letzter Beitrag vom 31. Mär 2011
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 11:25
Was ist denn eigentlich jetzt der Stand der Dinge?
Versuch doch bitte noch einmal das Problem, genau zu beschreiben!

Gruß
K-H

P.S.
Ich schlage mich im allg. nicht darum, fremde Sourcen zu lesen, um mögliche Fehler zu finden.
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
aphexx

Registriert seit: 23. Apr 2010
19 Beiträge
 
#2

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 13:31
Was ist denn eigentlich jetzt der Stand der Dinge?
Versuch doch bitte noch einmal das Problem, genau zu beschreiben!

Gruß
K-H

P.S.
Ich schlage mich im allg. nicht darum, fremde Sourcen zu lesen, um mögliche Fehler zu finden.
Danke erstmal, dass Du Dich überhaupt mit meinem Problem befassen magst.
Der Chat funktioniert mittlerweile fast einwandfrei. Das einzige Problem ist leider immer noch das vom Anfang,
dass das Memo, welches den gesamten Chatlog anzeigt, bei der vorletzten Nachricht nur den User und das Datum mit Zeit anzeigt.
Die Daten kommen aus einem Array of TEntry, welcher ein Record aus 2 Strings und einer Stringlist ist. Die Vermutung liegt nahe,
dass die Übergabe ans Memo fehlerhaft ist (PassEntries). Diese Schlussfolgerung kommt daher, dass dieses Array vor der Darstellung
analysiert und sortiert wird (also Datum/Zeit) und allein vom Datensatz her richtig befüllt ist. Das erkennt man daran,
dass sowohl in der aufsteigenden als auch absteigenden Sortieung der vorletzte Message-Eintrag des Chat-Logs fehlt.
Vielleicht ist es irgendein dubioser Zahlendreher, den ich einfach nicht sehe.

Ich werde nochmal die aktuellste main.pas anhängen. Die Übergabe vom Array zum Memo passiert in "PassEntries".
Angehängte Dateien
Dateityp: pas main.pas (10,2 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 14:42
Viel wichtiger,
wie sieht der Eintrag für den Text in deinem array aus?
"vorletzter" scheint mir sehr unwahrscheinlich, es sei denn Du fügst noch einen Standardsatz am Ende ein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
aphexx

Registriert seit: 23. Apr 2010
19 Beiträge
 
#4

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 15:11
Viel wichtiger,
wie sieht der Eintrag für den Text in deinem array aus?
"vorletzter" scheint mir sehr unwahrscheinlich, es sei denn Du fügst noch einen Standardsatz am Ende ein.

Gruß
K-H
Das Array spiegelt genau den Inhalt aller TXTs pro user wider, mit der Ausnahme, dass in den Textdateien {{ und }} zum Trennen der Beiträge vorhanden sind. Das Array wird nimmt die Daten dazwischen auf.
EDIT: User/Datum = String und Nachricht TStringlist.

Ich habe die Problematik kurz skizziert (s. Anhang).

Danke und viele Grüße,
aphexx
Angehängte Grafiken
Dateityp: jpg dropbox-chat.jpg (85,4 KB, 12x aufgerufen)

Geändert von aphexx (28. Mär 2011 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 16:17
das war ein Mißverständnis,
Sind die Daten im Array vorhanden?
Wenn ich Deinen anhang richtig verstehe, dann fehlen die Daten in der Anzeige und sind in der/den Datei(en) vorhanden.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
aphexx

Registriert seit: 23. Apr 2010
19 Beiträge
 
#6

AW: Memo lässt Zeilen verschwinden

  Alt 28. Mär 2011, 17:35
Jo, alle Daten sind im Array und die Anzeige im Memo ist fehlerhaft.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Memo lässt Zeilen verschwinden

  Alt 29. Mär 2011, 07:25
Hat wahrsch. nix mit dem Problem zu tun aber du machst vor der For-Schleife L.BeginUpdate, in der For-Schleife bei jedem Durchlauf L.BeginUpdate aber nur einmal nach der Schleife L.EndUpdate.
Ist das in der Schleife nicht überflüssig?

Zum Problem, kannst du dir nicht in einer weiteren For-Schleife mal den Inhalt von L ausgeben lassen?
Wenn da schon was fehlt liegts nicht am Memo sondern am füllen von L.

Ich würde mir vllt. einfach mal an versch. Stellen im Code den Stand der Dinge anzeigen lassen. Hat mit öfters schon geholfen, wenn ich einen gut versteckten logischen Fehler eingebaut hatte (soll jetzt nicht heißen, dass du einen solchen drin hast, kann gut auch was anderes sein).

P.S.: Hast du mal größere Beispiele durchgespielt? Ist wirklich immer nur der Vorletzte problematisch?
Ralph
  Mit Zitat antworten Zitat
aphexx

Registriert seit: 23. Apr 2010
19 Beiträge
 
#8

AW: Memo lässt Zeilen verschwinden

  Alt 29. Mär 2011, 22:37
Hat wahrsch. nix mit dem Problem zu tun aber du machst vor der For-Schleife L.BeginUpdate, in der For-Schleife bei jedem Durchlauf L.BeginUpdate aber nur einmal nach der Schleife L.EndUpdate.
Ist das in der Schleife nicht überflüssig?

Zum Problem, kannst du dir nicht in einer weiteren For-Schleife mal den Inhalt von L ausgeben lassen?
Wenn da schon was fehlt liegts nicht am Memo sondern am füllen von L.

Ich würde mir vllt. einfach mal an versch. Stellen im Code den Stand der Dinge anzeigen lassen. Hat mit öfters schon geholfen, wenn ich einen gut versteckten logischen Fehler eingebaut hatte (soll jetzt nicht heißen, dass du einen solchen drin hast, kann gut auch was anderes sein).

P.S.: Hast du mal größere Beispiele durchgespielt? Ist wirklich immer nur der Vorletzte problematisch?
Danke, das mit dem BeginUpdate für L habe ich korrigiert.

Dein Hinweis mit der Anzeige von L und der Überprüfung im Allgemeinen war sehr gut, denn das Ergebnis ist, tadaa, dass das Array falsch sortiert wurde.
L ist nicht schuld, das Memo auch nicht

Soweit so schlecht, denn dieser Sortieralgo ist doch eigentlich richtig, oder?
Ich versteh' dann trotzdem nicht, warum er ausgerechnet eine Stinglist aus dem Array haut.
Vor dem Sortieren war der vorletzte Array-Eintrag (inkl. StringList) vorhanden, danach nicht mehr.

EDIT: PS: bei größeren txt-Sammlungen ist es das selbe Ergebnis :/

Delphi-Quellcode:
procedure Sortieren(Aufsteigend: Boolean);
var
  E: TEntry;
  i, j, max: Integer;
  x, y: TDateTime;
begin
  E.Msg := TStringlist.Create;
  max := Length(Entries);
  for i:=0 to max-1 do
  for j:=0 to max-1 do
  begin
     DateSeparator := '.';
     ShortDateFormat := 'dd.mm.yyyy';
     LongTimeFormat := 'hh:nn:ss.zzz';

     if Aufsteigend = True
     then
     begin
       x := StrToDateTime(Entries[i].DatumZeit);
       y := StrToDateTime(Entries[j].DatumZeit);
     end
     else
     begin
       x := StrToDateTime(Entries[j].DatumZeit);
       y := StrToDateTime(Entries[i].DatumZeit);
     end;

     if x > y then
      begin
       E := Entries[i];
       Entries[i] := Entries[j];
       Entries[j] := E;
     end;
  end;
  E.Msg.Clear;
end;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Memo lässt Zeilen verschwinden

  Alt 30. Mär 2011, 02:15
BubbleSort? Die äußere Schleife High-1 oder in Deinem Fall
for i:=0 to max-2 do .
oder war es die innere?

Für TStringList würde ich aber ganz klar die Methode CustomSort verwenden. Delphi-Referenz durchsuchenTStringList.CustomSort
  Mit Zitat antworten Zitat
aphexx

Registriert seit: 23. Apr 2010
19 Beiträge
 
#10

AW: Memo lässt Zeilen verschwinden

  Alt 30. Mär 2011, 14:07
BubbleSort? Die äußere Schleife High-1 oder in Deinem Fall
for i:=0 to max-2 do .
oder war es die innere?

Für TStringList würde ich aber ganz klar die Methode CustomSort verwenden. Delphi-Referenz durchsuchenTStringList.CustomSort
OK, ich habe den Bubblesort nun umgeschrieben, doch das Problem besteht weiterhin, nur in anderem Gewand. Es wird bei aufsteigender Sortierung die 5. Nachricht nicht angezeigt und bei absteigender Sortierung die 2. Nachricht. Dein Tipp mit CustomSort ist etwas hanebüchen, da ich die einzelnen Text-Nachrichten ja nicht sortiere, sondern das Array of TEntry, welches aus 2 Strings und einmal TStringlist besteht.
Delphi-Quellcode:
procedure Sortieren(Aufsteigend: Boolean);
var
  E: TEntry;
  i, j, max: Integer;
  x, y: TDateTime;
begin
  E.Msg := TStringlist.Create;
  max := Length(Entries);
  for i:=Low(Entries) to High(Entries) do
  for j:=Low(Entries) to High(Entries)-1 do
  begin
     DateSeparator := '.';
     ShortDateFormat := 'dd.mm.yyyy';
     LongTimeFormat := 'hh:nn:ss.zzz';

     if Aufsteigend = True
     then
     begin
       x := StrToDateTime(Entries[j].DatumZeit);
       y := StrToDateTime(Entries[j+1].DatumZeit);
     end
     else
     begin
       x := StrToDateTime(Entries[j+1].DatumZeit);
       y := StrToDateTime(Entries[j].DatumZeit);
     end;

     if x > y then
      begin
       E := Entries[j];
       Entries[j] := Entries[j+1];
       Entries[j+1] := E;
     end;
  end;
  E.Msg.Clear;
end;
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:55 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