Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   von C++ nach delphi... (https://www.delphipraxis.net/33730-von-c-nach-delphi.html)

glkgereon 11. Nov 2004 18:01


von C++ nach delphi...
 
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

Chewie 12. Nov 2004 10:36

Re: von C++ nach delphi...
 
Ähm, C++-Code ist das aber nicht. Was du da hast, ist Java :!:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 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