Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

von C++ nach delphi...

  Alt 11. Nov 2004, 18:01
kann mir event mal einer was übersetzen?
es soll keine klasse werden, sondern einfach nur ein procedure bei der das aktuelle pi in LabeledEdit1.Text geschrieben werden soll

Code:
public class FractionGenerator implements Generator {
  private double start = 1.0;
  private double factor = 1.0;
  public Value next() {
    Double res = new Double (this.factor/this.start);
    this.start += 2.0;
    this.factor *= -1.0;
    return new ObjectValue(res);
  }
}
habe ich übersetzt mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i, toggle:integer;
    pidurch4:double;
begin
  i:=1;
  toggle:=1;
  running:=true;
  while running do
    begin
    pidurch4:=pidurch4+1/i*toggle;
    toggle:=toggle*(-1);
    end;
end;
doch nun hören meine fähigkeiten auf....in mehreren erweiterungsschritten kommen dieses sachen zustande:

Code:
public class PiGenerator extends DelegateGenerator {
  private double lastValue = 0.0;
  public PiGenerator (Generator g) {super(g);}
  public Value next() {
    return ObjectValue.fromDouble (4*(lastValue+=((Double)super.next().get()).doubleValue()));
  }
}
Code:
public class EulerTransform implements Transformer {
  private Double euler (double s0, double s1, double s2) {
    double res = s2 - Math.pow((s2-s1),2)/(s0-2*s1+s2);
    return new Double(res);
  }

  public Value transform(Generator g) {
    double s0 = ((Double)g.next().get()).doubleValue();
    double s1 = ((Double)g.next().get()).doubleValue();
    double s2 = ((Double)g.next().get()).doubleValue();
    return new ObjectValue(euler(s0,s1,s2));
  }
}
Code:
public static Generator multitransform (final Generator g, final Transformer t) {
  return new DelegateGenerator (transform(g,t)) {
    public Value next () {
      Value res = super.next();
      this.setDelegate(Generators.transform(this.getDelegate(), t));
      return res;
    }
  };
}
die ausgabe erfolgt schliesslich über
Code:
Generator eg = Generators.multitransform(
  new PiGenerator(new FractionGenerator()),
  new EulerTransform());
for (int i=0; i<5; i++) System.err.println (eg.next().get()+ " ");
nun, der vollständigkeit halber..es stammt hierher:
http://www.innuendo.de/documentation...Streams/euler1
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat