AGB  ·  Datenschutz  ·  Impressum  







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

Füllung einer Zahlenliste

Ein Thema von egal · begonnen am 13. Sep 2005 · letzter Beitrag vom 13. Sep 2005
Antwort Antwort
Seite 3 von 3     123   
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#21

Re: Füllung einer Zahlenliste

  Alt 13. Sep 2005, 16:22
Zitat von leddl:
Brauchst es doch nicht immer wieder sortieren. Einmal am Anfang reicht. Und das kannst du ja eigentlich auch direkt in der DB erledigen lassen. Und dann fügst du die Zahlen direkt an der richtigen Stelle mit Insert (bei ner ListBox) ein und mußt danach nix mehr sortieren.
Danke für Info, von Insert habe ich nicht gewusst.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#22

Re: Füllung einer Zahlenliste

  Alt 13. Sep 2005, 16:31
Passt scho.
Ist aber ein interessantes Problem. Wenn ich nachher noch Muse finde, werde ich mich mal dranhocken und spaßeshalber ne rekursive Version schreiben.

Aber nochmal zurück zum Problem:
Wie genau machst du es?
Liest du die DB einmal beim Start des Programmes ein und schließt die DB erst am Ende wieder?
Oder liest du für jedes Einfügen eines neuen Items die DB komplett neu in das Programm ein?
Im zweiten Fall kommst du nämlich um das ständige Sortieren der Daten wohl nicht rum. Wenn du allerdings die Indizes nur einmal holst und sie danach in der ListBox behältst (Durch das Einfügen der neuen Indizes in die ListBox bleibst du ja aktuell), kannst du dir das Neusortieren sparen. Entweder, du stellst die Eigenschaft Sorted der ListBox auf true (dann wird jedes Item automatisch richtig einsortiert - was das an Zeit schluckt, weiß ich allerdings nicht) oder du fügst jedes Item mit Insert direkt an der richtigen Stelle ein (diese Stelle sollte je in deinem Fall - wie gesagt - in einer ListBox immer "Zahl-1" entsprechen). Bei einem Array müßtest du dir die Insert-Funktion erst selbst implementieren, was aber auch kein Problem sein sollte.

//Edit:
Delphi-Referenz durchsuchenInsert ist eine Methode der ListBox, der du wie bei Add den String, aber zusätzlich noch den Index, an dem eingefügt werden soll, als Parameter übergibst. Soviel nur mal zur Erläuterung.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
egal

Registriert seit: 14. Jul 2004
190 Beiträge
 
Delphi XE4 Professional
 
#23

Re: Füllung einer Zahlenliste

  Alt 13. Sep 2005, 17:09
Zitat von leddl:
Passt scho.
Ist aber ein interessantes Problem. Wenn ich nachher noch Muse finde, werde ich mich mal dranhocken und spaßeshalber ne rekursive Version schreiben.

Aber nochmal zurück zum Problem:
Wie genau machst du es?
Liest du die DB einmal beim Start des Programmes ein und schließt die DB erst am Ende wieder?
Oder liest du für jedes Einfügen eines neuen Items die DB komplett neu in das Programm ein?
Im zweiten Fall kommst du nämlich um das ständige Sortieren der Daten wohl nicht rum. Wenn du allerdings die Indizes nur einmal holst und sie danach in der ListBox behältst (Durch das Einfügen der neuen Indizes in die ListBox bleibst du ja aktuell), kannst du dir das Neusortieren sparen. Entweder, du stellst die Eigenschaft Sorted der ListBox auf true (dann wird jedes Item automatisch richtig einsortiert - was das an Zeit schluckt, weiß ich allerdings nicht) oder du fügst jedes Item mit Insert direkt an der richtigen Stelle ein (diese Stelle sollte je in deinem Fall - wie gesagt - in einer ListBox immer "Zahl-1" entsprechen). Bei einem Array müßtest du dir die Insert-Funktion erst selbst implementieren, was aber auch kein Problem sein sollte.

//Edit:
Delphi-Referenz durchsuchenInsert ist eine Methode der ListBox, der du wie bei Add den String, aber zusätzlich noch den Index, an dem eingefügt werden soll, als Parameter übergibst. Soviel nur mal zur Erläuterung.
Ich werde ListBox verwenden, mit Array verliere ich mehr Zeit, da muss man entweder 2 Arrays verwenden, oder einen immer neu sortieren.
Wie es alles abläuft, da habe ich noch nicht bis zum Ende gedacht. Es sieht eigentlich so aus. Es gibt in der DB viele Tabellen, bei manchen Tabellen muss ich bei allen Datensätzen den Inhalt von 2 Feldern: Index und Beschreibung in eine andere Tabelle schreiben. Wenn Index schon da ist, aber die Beschreibung anders ist, dann speichere ich in einem Array den Schlüssel von diesem Datensatz. Wenn ich mit der Tabelle fertig ist, dann gucke ich, ob Array nicht leer ist. Wenn leer ist, dann gehe ich zu einer anderen Tabelle, wenn aber nicht, dann muss ich den Satz mit möglichst kleinem Index abspeichern. Und danach muss ich diesen neuen Index in 3-4 anderen Tabellen ändern.
Und hier weiß ich noch nicht. Entweder soll ich zuerst alle Sätze schreiben, neue Indizien abspeichern und dann in anderen Tabellen ändern oder nur einen Satz speichern, in anderen Tabellen den Index ändern und zu anderem Arrayelement gehen. Da muss ich noch gucken, was schneller ist.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: Füllung einer Zahlenliste

  Alt 13. Sep 2005, 21:04
Wie man über so ein kleines Problemchen so viel schreiben kann...
Hier
Delphi-Quellcode:
Function FindSmallestGap (aArray : Array Of Integer) : Integer;
Var
  l,h,m : Integer;

Begin
  l := 0; h := Length (aArray) - 1;
  While l<h do begin
    m := (l+h) div 2;
    if aArray[m] = m+1 Then
      l := m + 1
    else
      h := m - 1;
    End;
  Result := l+1;
End;
Findet die kleinste Lücke im Array. Bedingung: Zahlen von 1...n. Ich habe es rudimentär getestet, es sollte aber funktionieren.
Es liefert die Zahl I, die an der Stelle aArray [I-1] eingefügt werden muss.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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