AGB  ·  Datenschutz  ·  Impressum  







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

Memo lässt Zeilen verschwinden

Ein Thema von aphexx · begonnen am 25. Mär 2011 · letzter Beitrag vom 31. Mär 2011
Antwort Antwort
Seite 2 von 3     12 3      
aphexx

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

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
Miniaturansicht angehängter Grafiken
dropbox-chat.jpg  

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
 
#12

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
 
#13

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.733 Beiträge
 
Delphi 6 Enterprise
 
#14

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
 
#15

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
 
#16

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
 
#17

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
Jumpy

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

AW: Memo lässt Zeilen verschwinden

  Alt 30. Mär 2011, 15:17
Weiß den Fehler auch nicht, möchte aber mal wieder bei dir Aufräumen:

Delphi-Quellcode:
     DateSeparator := '.';
     ShortDateFormat := 'dd.mm.yyyy';
     LongTimeFormat := 'hh:nn:ss.zzz';
1. Muss das in der Schleife stehen? Reicht das nicht, das einmalig festzulegen?

2. Irgendwie sieht mir der Sortieralgorhytmus noch komisch aus. Setzt doch einfach mal einen anderen um, z.B. SelectionSort, oder so.

Just my 2 ct.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Memo lässt Zeilen verschwinden

  Alt 30. Mär 2011, 17:02
wie wäre es statt des Arrays eine Tlist zu verwenden?
Da gibt es eine funktionierende Sortierung.

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
 
#20

AW: Memo lässt Zeilen verschwinden

  Alt 30. Mär 2011, 21:28
wie wäre es statt des Arrays eine Tlist zu verwenden?
Da gibt es eine funktionierende Sortierung.

Gruß
K-H
Ich hab' nun das Array in eine funktionierende TList umgewandelt. Die Datenübergabe funzt perfekt, allerdings habe ich jetzt noch ein kleines Problem mit der Sortierung. Die Reihenfolge ist überhaupt nicht korrekt und sieht nur 'etwas' sortiert aus. Außerdem wird die Reihenfolge jedes mal geändert, wenn ich die Liste sortiere. Klar ist das erwünscht, wenn ich meine Boolean-Variable mit ins Spiel bringe, aber ohne Variable muss das Ergebnis doch immer gleich aussehen. Für eine absteigende Sortierung (siehe Code-Block) würde ich in der if-Klausel X > Y schreiben. Wäre das korrekt?


Nach ein wenig Recherche sieht meine TListSortCompare so aus:
Delphi-Quellcode:
function Dh_CompareDateB(Item1, Item2: pointer):integer;
var
  X, Y: TDateTime;
begin
  x := StrToDateTime(PEntry(Item1).DatumZeit);
  y := StrToDateTime(PEntry(Item2).DatumZeit);
  if (X < Y)
  then Result := 1
  else if (X = Y) then Result := 0
                    else Result := -1;
end;
@Jumpy: Danke für's aufräumen, ich habs umgesetzt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12:12 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