[Gelöst] Feldname wie Funktion nennen

2. März 2011 12:37

Hallo,

ich möchte in einer Tabelle ein Feld "Insert" nennen.

Im Code bekomme ich dann einen Compilierungsfehler
Ein ':=' ist ein Teil der Syntax, wenn Sie eine Zuweisung durchführen...

Code:
LogTable.Insert := RecInsert;
LogTable.INSERT;


Gibt es eine Möglichkeit den Fehler zu umgehen ohne den Feldnamen zu ändern?

Gruß
Ralf
Zuletzt geändert von ralf5 am 2. März 2011 13:26, insgesamt 1-mal geändert.

Re: Feldname wie Funktion nennen

2. März 2011 12:44

Insert ist ein reserviertes Wort - das darfst du schlichtweg nicht verwenden, du musst es umbenennen.

Dein Codebeispiel zeigt es doch schon recht anschaulich:

Code:
LogTable.Insert := Irgendwas;
LogTable.INSERT;


Woher soll der Compiler wissen, dass die erste Zeile (Feld) was anderes meint als die zweite (Funktion)? Großschreibung ist in C/AL irrelevant.

Re: Feldname wie Funktion nennen

2. März 2011 13:17

Kann man das Feld oder die Funktion "maskieren".

In anderen Programmiersprachen geht das.

In C# z.B. muss ein AT-Zeichen "@" vor den betreffenden Bezeichner gesetzt werden um ihn zu maskieren.

Re: Feldname wie Funktion nennen

2. März 2011 13:19

ralf5 hat geschrieben:Kann man das Feld oder die Funktion "maskieren".

Nicht in C/AL.
Warum muss es denn unbedingt Insert sein? Ginge nicht z.B. "To Insert" o.ä. (sinnvolle Benennung je nach Datentyp).

Re: Feldname wie Funktion nennen

2. März 2011 13:25

Ich bearbeite Datensätze und in die Log-Datei schreibe ich rein, wie viele gelöscht, geändert und eingefügt wurden.

Die Feldnamen heißen dementsprechend Delete, Modify und Insert.

Da fällt mir gerade auf das NAV gegen die Feldnamen gar keine Einwände hat solange nicht die Funktionen angesprochen werden.

Bei
Code:
LogTable.Delete := Irgendwas;
gibt es keine Probleme.

Naja, dann werde ich die Felder eben umbenennen.

Danke
Ralf

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 13:55

ralf5 hat geschrieben:Bei
Code:
LogTable.Delete := Irgendwas;
gibt es keine Probleme.

Das ist ja witzig. Wie kriegt man denn dann das Löschen eines Datensatzes hin?

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:15

Ist mir beim lesen des Beitrags durch den Kopf gegeangen...und wirklich

INSERT := TRUE;

verhält sich wie

INSERT(TRUE);

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:17

Es gibt doch genug fantasie im Land?
Wenn man etwas loggt, wurde es schon getan, man protokolliert es nur.
Also ist logisch Insert, modify, delete falsch, sondern es müsste inserted, modified und deleted heißen.

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:19

Message:='abc' klappt ebenso. Aber ich hab's eben auch mal probiert: im Beispiel oben scheint delete wirklich nur noch zur Wertzuweisung zu funktionieren.

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:20

tmartin hat geschrieben:Ist mir beim lesen des Beitrags durch den Kopf gegeangen...und wirklich

INSERT := TRUE;

verhält sich wie

INSERT(TRUE);


*Nick* also doch, das ist nämlich generell in C/AL so, auch wenn es wohl nicht dokumentiert ist.
Beispiel:
Code:
CurrReport.SHOWOUTPUT(TRUE);
kann auch geschrieben werden als
Code:
CurrReport.SHOWOUTPUT := TRUE;


Ergo:
Code:
LogTable.Delete := Irgendwas;
ist ziemlich "böse", der löscht nämlich ;-)

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:25

Natalie hat geschrieben:Ergo:

Code:
LogTable.Delete := Irgendwas;
ist ziemlich "böse", der löscht nämlich

Nee, eben nicht :wink:

(Also dann nicht, wenn es ein Feld mit Namen "Delete" gibt)

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 14:58

McClane hat geschrieben:
(Also dann nicht, wenn es ein Feld mit Namen "Delete" gibt)


Das ist ja super, so kann man ja auf einfache Weise eine Tabelle mit einem Lösch- und Schreibschutz versehen,
zumindest programmiertechnisch :mrgreen:

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 16:07

ralf5 hat geschrieben:Das ist ja super, so kann man ja auf einfache Weise eine Tabelle mit einem Lösch- und Schreibschutz versehen,
zumindest programmiertechnisch

Spart einem auch diese lästige Rechtevergabe, da es sich bei insert, rename und modify ja genauso verhalten dürfte :wink:

Re: [Gelöst] Feldname wie Funktion nennen

2. März 2011 17:40

eignet sich auch bestens zu einem richtig schönen "How to shoot yourself in the foot" :)