Autor Beitrag
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Mi 20.11.02 21:59 
also da ich kein organisationsgenie bin(ihr solltet mal meinen schreibtisch sehen) hab ich probleme mit der datenorganisation einer datei.
ich hab mehrere einträge in einer datei die ich in einer listbox aufrufen will

die schlüssel hab ich über eine "for i:=0 to anzahl_der_einträge do" schleife auf die listbox übertragen.
so liegen die daten in der datei:
key = wert
    0 = abc
    1= aaa
    2 = bbb
    3 = ccc
    4 = ddd
    5 = eee
    6 = fff
    7 = was kam noch mal nach f? ;-)


es werden nur die werte in der listbox angezeigt!
jetzt hat der user die möglichkeit einen schlüssel zu löschen, sagen wir mal den key 4.
jetzt hab ich den denkfehler gemacht und folgenden code benutzt:
ausblenden Quelltext
1:
datensatz_löschen(listbox1.itemindex)					

mit der procedur datensatz_löschen wird der selbe datensatz gelöscht wie der itemindex in der listbox ausgewählt ist.
beispiel itemindex=4->> löscht datensatz 4

nachdem der user nummer 4 gelöscht hätte würde das so aussehen:
    0 = abc
    1= aaa
    2 = bbb
    3 = ccc
    5 = eee
    6 = fff
    7 = was kam noch mal nach f? : ;-) :


jetzt funktioniert das mit dem itemindex aber nicht mehr.

nun ist die frage: wie kann ich das alles so organisieren, dass es egal ist welchen datensatz ich lösche und beim nächsten aufrufen auch der richtige datensatz gelöscht wird.

(ich glaub ich würde den schrott den ich jetzt zusammengeschrieben hab selbst nicht verstehen, aber versucht es oder fragt mich aus!!!)

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
fbkreon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Mi 20.11.02 22:39 
Warum machst du nicht einfach nen refresh der Listbox nach dem Löschen?? Es geht nur so, glaube ich. :roll:

Das läuft dann ungefähr so:

Listbox aufbauen,
User löscht,
Listbox mit den vorhandenen Werten wieder aufbauen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 21.11.02 09:06 
patrick hat folgendes geschrieben:
beispiel itemindex=4->> löscht datensatz 4 (...) jetzt funktioniert das mit dem itemindex aber nicht mehr.

Doch, der "ItemIndex" funktioniert schon, nur wird kein passender Datensatz mit dieser Nummer zum Löschen gefunden.

Zitat:
nun ist die frage: wie kann ich das alles so organisieren, dass es egal ist welchen datensatz ich lösche und beim nächsten aufrufen auch der richtige datensatz gelöscht wird.

Die einfachste Möglichkeit ist, dass du die Zugriffe auf die Datei begrenzt. Will sagen: z.B. beim Start oder via Button wird die Datei ausgelesen und in der Listbox dargestellt.
Jede Aktion des Users (Löschen, evtl. Hinzufügen, usw.) hat jetzt nur Auswirkungen auf die Listbox. Auf diese Weise kannst du recht simpel eine "Reset"-Funktion schreiben, die die Originaldatei wieder einliest und alle bislang gemachten Änderungen auf den Müll wirft, und der User kann -z.B. wieder durch Buttonklick- entscheiden ob er die neuen Daten in der Listbox als neue Datei ablegen will:
ausblenden Quelltext
1:
2:
for i := 0 to lb1.Items.Count - 1 do
  cIni.WriteString('blupp',inttostr(i+1),lb.Items[i]);

als Beispiel für INIs. Dadurch werden die Nummern der Datensätze ja automatisch korrigiert, so dass du in der Datei wieder den Datensatz #4 zum Löschen hast. :)
patrick Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Do 21.11.02 18:29 
THX
das ich mit dem umbenennen net selber drauf gekommen bin :autsch: :oops: :autsch:

_________________
Patrick
im zweifelsfall immer das richtige tun!!!