AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Sortieren, Löschen, Schreiben in Mehrdimensionalen Array

Sortieren, Löschen, Schreiben in Mehrdimensionalen Array

Ein Thema von torud · begonnen am 22. Nov 2006 · letzter Beitrag vom 23. Nov 2006
 
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Sortieren, Löschen, Schreiben in Mehrdimensionalen Array

  Alt 22. Nov 2006, 15:57
Hallo Wissende, ich habe 3 Routinen, die ich mir erstellt habe, um Inhalte eines mehrdimensionalen Array anschaulich zu machen und Inhalte zum Teil in einer Listbox anzeigen zu lassen.

Ich poste hier erstmal die 3 Routinen und schildere was mein Problem ist.

Diese erste Routine soll eigentlich die leeren "Zeilen finden" und automatisch befüllte Einträge nach oben verschieben. Also wenn der 2 Eintrag(myData[0,1]) leer ist, dann ab dem 3. Eintrag(myData[0,2]) alles hochschieben...usw. Sie wird aufgerufen, wenn man dem Aray einen neuen Eintrag hinzugefügt hat, oder einen Eintrag gelöscht hat. Hier scheint sich auch ein Fehler eingeschlichen zu haben, denn wenn ich mitten im Array aus 20 Einträgen die Einträge 4 bis 13 lösche, erhalte ich später in der Ansicht nicht die Einträge 1-3 und 14-20 sondern nur 1-3.
Delphi-Quellcode:
procedure TForm1.SortiereGrid;
var
i, k, last :integer;
begin
  last := -1;
  for i:= 999 downto 0 do
    if myData[0,i] > 'then
      begin
        Last := i; //letzter Eintrag
        break; //geht aus Schleife raus
      end;

  if last = -1 then exit; //kein Eintrag gefunden - Abbruch

  i := Last -1; //letzten Eintrag um einen verringern

  while i > 0 do //so lange, wie letzter ET > 0
    begin
      if myData[0,i] = 'then //wenn leer beginne
        begin
          Last := Last -1; //ziehe einen ab
          for k := i to Last do //schleife von i bis Last
            begin
             myData[0,i]:=myData[0,i];//Gruppe[i] = Gruppe[i-1]
            end;
           myData[0,Last+1]:='';
        end;
        i:=i-1
    end;
end;
Diese Procedure schreibt mir den Inhalt des Arrays in eine Listbox, damit ich auch was sehen kann. Funktioniert einwandfrei!
Delphi-Quellcode:
procedure TForm1.WriteList;
var
  i:integer;
begin
    list_pics.Clear;
    for i:=0 to 999 do
      begin
        if myData[0,i] > 'then list_pics.Items.Add(myData[0,i]); //bildpfad
        //ShowMessage(myData[0,i]);
      end;
end;
Und mit folgender Routine will ich eigentlich Einträge aus dem Array löschen. Dabei gehe ich davon aus, dass die in die Listbox geschriebenen Einträge selektiert sind.
Delphi-Quellcode:
procedure TForm1.btn_del_fileClick(Sender: TObject);
var
k,n:integer;
begin

   for n:=0 to list_pics.Count-1 do
     begin
       if list_pics.Selected[n]=true then
         begin
           if chk_confirm_delete.Checked then //löschen soll bestätigt werden
             if MessageDlg('Soll das Bild: '+ExtractFileName(list_pics.Items.Strings[n])+' wirklich gelöscht werden?',mtConfirmation,[mbyes,mbno],0) = 6 then
               begin
                 ShowMessage(myData[0,n]+chr(13)+'Zeile:'+inttostr(n));
                 myData[0,n]:='';
               end
           else //ohne Löschbestätigung
             myData[0,n]:='';
         end;
     end;

    SortiereGrid; //siehe oben
    WriteList; //leeren und zurückschreiben in listbox
    list_picsClick(sender);
end;
Ich habe schon gesucht und versucht zu debuggen, aber ich weiss einfach nicht wo der Fehler ist....Ich bin mir ziemlich sicher, dass der Fehler in der Routine SortiereGrid sein muss, aber ich kann ihn finden. Wer hilft mir bitte?
Danke
Tom
  Mit Zitat antworten Zitat
 

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 22:13 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