Codeblöcke vergleichen [ERLEDIGT]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Codeblöcke vergleichen [ERLEDIGT]

Beitrag von UliTs »

Hallo allerseits,

ich möchte gern Codeblöcke vergleichen.

Code: Alles auswählen

? {||"Hallo"}={||"Hallo"}
liefert den Wert FALSE. :(
Und während ich dies so schreibe, habe ich auch schon die Lösung:

Code: Alles auswählen

A := {||"Hallo"}
B:=A
? A=B
liefert den Wert TRUE. :D
Das heißt in meinem konkreten Fall, daß ich dafür sorgen muß, daß ich Codeblöcke erst einer Variablen zuweisen muß, um sie später vergleichen zu können. :D
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von AUGE_OHR »

UliTs hat geschrieben:ich möchte gern Codeblöcke vergleichen.

Code: Alles auswählen

? {||"Hallo"}={||"Hallo"}
Das heißt in meinem konkreten Fall, daß ich dafür sorgen muß, daß ich Codeblöcke erst einer Variablen zuweisen muß, um sie später vergleichen zu können.
ein Codeblock wird üblicherweise evaluiert.

Code: Alles auswählen

? EVAL({||"Hallo"})=EVAL({||"Hallo"})
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von Tom »

Hallo, Jimmy.
ein Codeblock wird üblicherweise evaluiert.
Wenn ein Codeblock evaluiert wird, wird der darin enthaltene Code ausgeführt. Wenn man aber nur Codeblöcke inhaltlich vergleichen will, kann das unangenehme Nebeneffekte generieren. :wink:
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von UliTs »

Danke für Eure Kommentare.
Jimmy: damit vergleiche ich nur das Ergebnis der Codeblöcke und bei unsauberer Programmierung gibt's auch noch Nebeneffekte wie Tom angemerkt hat.
Ich hatte auch zunächst das Ergebnis der Codeblöcke verglichen, bin aber dann darüber gestolpert, als zwei den gleichen String als Ergebnis hatten.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von brandelh »

Hi,

zunächst muss man wissen, was einen interessiert !
Frage 1: "Haben zwei Codeblöcke das gleiche Ergebnis ?" -> Jimmys AEVAL()
oder
Frage 2: "Verweisen zwei Variablen auf den gleichen Codeblock ?" -> Ulis A = B

Ich vermute, dass

Code: Alles auswählen

A = {|| "Hallo" }
B = {|| "Hallo" }
? A = B -> .f.
denn es sind 2 unterschiedliche Codeblöcke (Speicherstellen mit Code), die nur den gleichen Inhalt liefern.

Bei Arrays ist es doch auch so, 2 vom Inhalt gleiche Arrays zweimal angelegt ...
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von Tom »

Hallo, Hubert.

Du hast recht.

Code: Alles auswählen

bBlock1 := {||MsgBox('Hallo')}
bBlock2 := {||MsgBox('Hallo')}
? bBlock1 = bBlock2 // Antwort: .F.
? Eval(bBlock1) = Eval(bBlock2) // Antwort: .T., aber die Messageboxen sind natürlich zu sehen
Was mich allerdings - abseits hiervon - beschäftigt: Warum zur Hölle sollte man Codeblöcke, die man schließlich (oder nicht?) selbst erzeugt, auf Gleichheit prüfen? :shock:
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von Tom »

Ergänzung:

So geht es:

Code: Alles auswählen

bBlock1 := {||MsgBox('Hallo')}
bBlock2 := {||MsgBox('Hallo')}
? Var2Char(bBlock1) = Var2Char(bBlock2) // Antwort: .T., Var2Char liefert den Codeblock als Text
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von UliTs »

Hallo Tom,

zur "Hölle":
wie so oft, hilft man sich manchmal mit "Krücken" im Programm um eine schnelle Lösung zu haben.
Ich habe einen Listengeneratur geschrieben. Als Parameter übergebe ich je Spalte einen Codeblock, der pro Datensatz ausgeführt wird. Möchte ich mehrere Zeilen pro Datensatz haben, übergebe ich ein Array mit Codeblöcken.
Irgendwann wollte ich dann mit Zeilenumbruch arbeiten. Also kam ich auf die -an sich einfache- Idee, ein Array mit den gleichen Codeblöcken zu übergeben.
Im nachhinein wäre es natürlich besser gewesen, einen zusätzlichen Parameter zu übergeben ...

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von UliTs »

Var2Bin ist auch eine gute Idee, die noch besser gewesen wäre! Habe jetzt aber schon meinen Code umgestellt.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 369
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Codeblöcke vergleichen [ERLEDIGT]

Beitrag von Klaus Schuster »

Var2Bin hat nicht funktioniert. Mit Var2Char ging es einwandfrei.
Gruß Klaus
Antworten