DELETE() [erledigt]

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

DELETE() [erledigt]

Beitrag von Herbert »

Ich hatte einen Schreibfehler in der Source und eben DELETE() anstelle des simplen DELETE geschrieben gehabt.
Allerdings wird mit Delete() kein Satz gelöscht. Es passiert nichts.

Da der Compiler keinen Fehler brachte, heisst das doch, dass irgendwo eine Delete()-Funktion exisitiert.

Was macht denn das Delete()?
Zuletzt geändert von Herbert am Mo, 09. Aug 2010 23:15, insgesamt 1-mal geändert.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Rolf Ramacher »

Hi Herbert,

sowie ich das verstanden habe, kannst du mit delete() innerhalb einer schleife bzw. einer vorgabe mehrere Datensätze löschen.
ich arbeite immer mit Dbdelete() - 123->(DbDetele()) - innerhalb einer do - while schleife.
in beiden Fällen sind die datensätze als gelöcht markiert. - mit (Dbpack()) sind sie ja weg.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von brandelh »

Hallo,

schau doch mal in die PPO (compilerschalter /P setzen) Datei, dann siehst du die internen Befehle.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Tom »

Offenbar hat die nichtdokumentierte Funktion dieselbe Wirkung wie die (dokumentierte) Funktion "Deleted()". Jedenfalls deute das hier darauf hin:

Code: Alles auswählen

FUNCTION Main()
USE test NEW
DbGoTop() // erster Satz ist gelöscht
? Delete() // Ja
? Deleted() // auch Ja
DbSkip(1) // zweiter Satz ist NICHT gelöscht
? Delete() // Nein
? Deleted() // auch Nein
CLOSE
RETURN nil
@Herbert: Im PPO-Code bleibt der Funktionsaufruf schlicht stehen.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Tom »

Hallo, Rolf.
sowie ich das verstanden habe, kannst du mit delete() innerhalb einer schleife bzw. einer vorgabe mehrere Datensätze löschen.
Nur zum (besseren) Verständnis: Mit dem Kommando "DELETE" (also ohne Klammern) kann man einzelne Datensätze löschen. Die Direktivdatei "STD.CH" macht daraus das "DbDelete()", das Du auch verwendest. Es spielt also keine Rolle, ob man Kommando oder die äquivalente Funktion DbDelete() benutzt, jedenfalls bis zu dem Punkt, an dem man mit Alias-Operatoren arbeitet oder Rückgabewerte verarbeiten will.

Die Funktion "Delete()" gibt es offiziell überhaupt nicht, sie macht aber - siehe oben - offenbar dasselbe wie die Funktion "Deleted()", nämlich anzeigen, ob ein Datensatz gelöscht ist.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Martin Altmann »

Tja - und warum macht sie das wohl?
Aus dem selben Grund warum z.B. solche Dinge auch funz(t)en:

Code: Alles auswählen

SET DELE ON
SET PROC TO bla.prg
Es reicht unter Clipper doch aus, die ersten vier Buchstaben eines Kommandos zu schreiben - sofern es dadurch eineindeutig ist!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Tom »

Hallo, Martin.

Verblüffend aber, dass das auch für Funktionen gelten soll. :shock: Ich habe gerade mal getestet - das hier funktioniert wirklich:

Code: Alles auswählen

? Round(5,2) // 5.00
? Roun(5,2) // 5.00
? Dele() // .F. - keine Tabelle geöffnet
Ganz erstaunlich.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9356
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Tom »

Ah. Licht am Horizont. If everything fails, read the f*cking manual. Bei "Elemente eines Xbase++-Programms", Unterbereich "Funktionen" wird ausgeführt:

Einige reservierte Funktionsnamen unterliegen aus Gründen der Kompatibilität der dBase Konvention, wonach ein Bezeichner bis auf die ersten vier Buchstaben abgekürzt werden kann.

Darunter "Deleted()" und - Zufallstreffer - "Round()". Es handelt sich um:

Replicate()
Transform()
DevPos()
Round()
Deleted()
Lower()
RTrim()
Break()
Seconds()
Upper()
Select()
Empty()
SetPos()
ValType()
CMonth()
Space()
PCount()
Inkey()
SubStr()
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: DELETE()

Beitrag von Herbert »

Oh, danke allerseits, sehr interessant!
Antworten