AGB  ·  Datenschutz  ·  Impressum  







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

Records löschen

Ein Thema von TheMiller · begonnen am 6. Apr 2004 · letzter Beitrag vom 26. Mai 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#11

Re: Records löschen

  Alt 6. Apr 2004, 16:28
danke,

ich werde mir mal dein Beispiel zu Gemüte führen..

Danke,

bis dann
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#12

Re: Records löschen

  Alt 6. Apr 2004, 17:40
Hi...

irgendwie funzt das nicht so...

Also, ich beschreibe es mal genauer...

Mein Programm lädt in eine ValueList alle Rezepte ein. Dort kann ich eins markieren und dann werden rechts die genauen Daten angezeigt (in Label1.Caption usw.). So, meine einladeprodzedur sieht so aus

Delphi-Quellcode:
procedure TForm1.LoadRezept;
begin
  Seek(RezeptFile, recnow-1);
  Read(RezeptFile, RRezept);

  with RRezept do begin
     Label19.Caption:=name;
     ...
     ...
     ...
     ValueListEditor1.InsertRow(name,Port ionen,true);
  end;
end;

for i:=1 to filesize(Rezeptfile) do begin
IF recnow = filesize(Rezeptfile) then recnow:=1 else inc(recnow);
loadRezept;
So wird alles eingeladen. Nun würde ich gerne ein Rezept in der Liste markieren können und dann löschen. Ich bekomme keinen vernünfitgen Code hin
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#13

Re: Records löschen

  Alt 6. Apr 2004, 21:38
Du benutzt einen Typ : FILE OF Record irgendwas Das ist ähnlich wie bei einer Textdatei. Mit dem seek gehst Du an eine definierte Stelle der Datei. Das hat den Vorteil, daß Du nicht jedes mal sequentiell vom Anfang bis zu der Suchstelle sequentiell durchwandern mußt. Der Nachteil davon ist aber : die Datei an sich kann nicht aktualisiert werden. Bzw.: gelöschte Datensätze bleiben schon noch da und werden nur gekennzeichnet.

Deshalb hat man im Record ein Feld, das z.B. für einen Datensatz auf -1 steht und diesen dadurch als gelöscht kennzeichnet, obwohl er noch da ist. Im Programm muß nun dieses Feld rausgefiltert werden. Also alle Datensätze <> -1 werden angezeigt.

Weg kriegst du ihn dadurch, einen Reorganisationslauf durchzuführen, indem Satz für Satz in eine neue Datei eingefügt werden, sofern sie das Löschfeld <> -1 besitzen. Diese wird dann umkopiert und die gelöschten Sachen sind dann auch weg. Bei sensiblen Daten reicht auch das aber nicht !
Gruß
Hansa
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#14

Re: Records löschen

  Alt 7. Apr 2004, 10:58
sorry aber (ich mag das auch mal sagen ) imemr nur ein Post (mit edit verändern) sonst gilts(auch wenns nicht so gemeint ist) als pushen (das dein Thread unter den ersten 10 ist)



...



Ps.: ich schreib auch oft zwei hintereinander
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#15

Re: Records löschen

  Alt 26. Mai 2004, 16:37
Hi,

ich muss dieses Thema mal wieder aufgreifen.

Ich habe jetzt einen Wert "Active". Wenn dieser Null ist, dann wird der Datensatz nicht angezeigt. Wenn ich einen neuen Datensatz erstelle, dann zeigt er mir den auch an, aber mit den Werten des Datensatzen mit Null.

BSP:
Delphi-Quellcode:
Aufgabe: Müll rausbringen
Beschreibung: Müll trennen
Datum: 26.05.2004
Active: 1

nachdem ich diesen Datensatz gelöscht habe, sieht der nächste so aus:

Aufgabe: Ins Büro fahren
Beschreibung: Müll trennen
Datum: 26.05.2004
Active: 1
Wie kann ich den Satz komplett löschen?
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#16

Re: Records löschen

  Alt 26. Mai 2004, 18:28
Kann mir da keiner Helfen?? Bitte bitte *euchanfleh*
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Records löschen

  Alt 26. Mai 2004, 18:32
Ich habe auf meiner Seite eine Unit mit einer Klasse, um mit typisierten dateien zu arbeiten, das sollte es tun. Entweder benutzt du sie direkt oder du kuckst dir an, wie ich es gelöst habe. Dabei habe ich es genauso gemacht, wie schon vorgeschlagen und kopiere den letzten Datensatz an die Stelle des zu löschenden Datensatzes und fertig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#18

Re: Records löschen

  Alt 26. Mai 2004, 18:34
Ok, wird gemacht. THX
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#19

Re: Records löschen

  Alt 26. Mai 2004, 18:50
Zitat von DJ-SPM:
Kann mir da keiner Helfen??
Du brauchst einen kleinen Grundkurs.
Also, wenn du eine Datei hast, kannst du nicht einfach aus der Mitte oder Anfang ein Stück
herausschneiden, ohne dass du einen relativ grossen (Kopier-)Aufwand hast.
Deshalb wird bei einer "richtigen" Datenbank ein Flag verwendet, das angibt, ob der Datensatz
gültig oder gelöscht ist. Beim DBase-Format ist dies z.B. das 1. Zeichen eines Record (' '=OK, '*'=Gelöscht).
Mit der Zeit enthält deine Datei immer mehr Löcher mit gelöschten Datensätzen.
Dann ist es an der Zeit die Datei zu komprimieren. Dazu braucht die Komprimierfunktion
nur die Satzlänge zu kennen.

Luckie gab den Vorschlag: "... und kopiere den letzten Datensatz an die Stelle des zu löschenden Datensatzes und fertig". (Zusätzlich muss man die Datei noch mit Truncate um einen Satz kürzen)
Dies ist relativ effektiv, allerdings wird die Reihenfolge der Datensätze geändert.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:47 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