AGB  ·  Datenschutz  ·  Impressum  







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

Löschen eines Datesatzes

Ein Thema von hansklok · begonnen am 3. Aug 2005 · letzter Beitrag vom 3. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:23
Hi,
ich bin gerade dabei eine Bibliotheks-Datenbank zu schreiben. Man kann schon Titel hinzufügen, suchen etc. Nun platziere ich den Dateizeige wie folgt auf einen bestimmten Datensatz:

Delphi-Quellcode:
Reset(Datendatei); // öffnet Datendatei
Seek(Datendatei, 16); // setzt Dateizeiger auf den 16. Datensatz

... ?
CloseFile(Datendatei);
Kann mir bitte jemand ne Hilfestellung geben, wie ich nur diesen Datensatz (16.) entferne?

MfG

Hansklok
  Mit Zitat antworten Zitat
Kompon Ente
(Gast)

n/a Beiträge
 
#2

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:25
Delete(Datendatei, 16) ?
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#3

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:29
... @ Janosch: Die Procedure entfernt einen Teilstring aus einem String:

Definition: procedure Delete(var S: string; Index, Count:Integer);

Ich möchte aber, wie du schon richtig erkannt hast, dass der 16. Datensatz, oder welcher auch immer gelöscht wird.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:31
Letzten Datensatz an die Stelle des zu löschenden kopieren und die Datei um die Größe eines Datensatzes kürzen. Oder wenn sie sortiert beliben müssen, alle Datensaätze eins nach vorne kopieren und dann die Datei wieder verkürzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
franktron

Registriert seit: 11. Nov 2003
Ort: Oldenburg
1.446 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:32
Jetzt kommt das Prinzip von Datenbanken zum zuge.

Also du must ein Flag für gelöscht haben.


Dann kannst du noch ein Prog machen was ein Reorg. macht dazu must du einfach die DB Kopieren und die Gelöschet Datenzätze weg lassen.
Frank
Tux sein Lieblingsquellcode
While anzfische<TuxSatt do begin
Fisch:=TFisch.Create; Tux.EssenFisch(Fisch); Fisch.Free;inc(anzfische); end;
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#6

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:34
@ Luckie: Aber Truncate(Datendatei) , ich hoffe du meinst dies, löscht doch alle datensätze, ab der Position, die ich zubvor mit Seek festlege!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:37
Exakt. Und? Was willst du mehr?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:47
Zitat von franktron:
Jetzt kommt das Prinzip von Datenbanken zum zuge.

Also du must ein Flag für gelöscht haben.


Dann kannst du noch ein Prog machen was ein Reorg. macht dazu must du einfach die DB Kopieren und die Gelöschet Datenzätze weg lassen.
Klingt etwas chaotisch, aber franktron meint ein Vorgehen wie bei dBase-Dateien. Dort war das erste Byte in jedem Datensatz reserviert als Löschkennzeichen. So eine Datei ist also niemals geschrumpft, außer durch eine Reorgisation. Dadurch wird das Löschen aber wesentlich vereinfacht, weil du sonst wirklich JEDEN Datensatz einzeln nach unten schieben musst, wenn du mittendrin einen löscht.

[Nachtrag]

Bist du dir sicher, dass du das so machen willst und nicht einfach eine "richtige" Datenbank nimmst?
Volker
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:53
Meine ersten Versuche (damals anno ...) habe ich auch so gemacht. Da hatte ich auch kein Ahnung von Datenbanken.
Du solltest unbedingt mit einem Löschkennzeichen arbeiten!
Bei einer Bibliotheks-DB kommen schonmal schnell ein paar Datensätze zusammen. Wenn du dann physisch löscht, wirds lustig. Ich hoffe, du kochst gerne Kaffee.

Ich weiß jetzt gar nicht, wie ich das auf meiner HP für das Beispiel mit typisierten Dateien gemacht habe, aber ich meine dort ist eine Löschfunktion drin.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Löschen eines Datesatzes

  Alt 3. Aug 2005, 14:55
Nun ja, das mit dem Löschflag sei mal dahingestellt, irgendwann wird er sie auch mal physisch löschen wollen und da denke ich wäre meine Methode eine Möglichkeit. Auf meiner Homepage findet sich übrigens auch eine Klasse für typisierte Dateien mit Datensatzlöschfunktion.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:26 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