hi,
hmhmhm. naja, erstens wäre es schön, wenn du die [code] tags benutzen würdest. und zweitens ist das nicht ganz leicht. denn in delphi solltest du vorher schon wissen, welchen typ die func zurückgeben soll (also nicht mal boolean und mal ein array). das wäre eventuell mit einem record oder einer kalsse zu lösen.
achja und drittens ist der code fehlerhaft. du gibst einmal false zurück, wenn die bedingung zutriffst. dieses result wird aber sofort wieder mit einem array überschrieben....
ich habs aber spaßeshalber mal trotzdem versucht zu übersetzen:
Delphi-Quellcode:
type
TNewCoordResult = record
ok: boolean;
Con, Sec, Sub: double;
end;
function new_coord(x, y: double): TNewCoordResult;
var tempx, tempy: string;
begin
result.ok := true;
tempx := floattostr((x + 250) / 0.5);
tempy := floattostr((y + 250) / 0.5);
if (tempx < 0) or (tempy < 0) then
begin
result.ok := false;
exit; //edited: ganz wichtig ;)
end;
result.con := strtofloat(copy(floattostr(tempy), 0, 1) + copy(floattostr(tempx), 0, 1));
result.sec := strtofloat(copy(floattostr(tempy), 1, 1) + copy(floattostr(tempx), 1, 1));
result.sub := strtofloat(floattostr(strtofloat(copy(floattostr(tempy), 2, 1)) / 2 * 5) + floattostr(strtofloat(copy(floattostr(tempx), 2, 1)) / 2));
end;
ohne gewähr
edit:
oh meion gott, die letzte zeile ist aber mega unübersichtlich. @dax und supemuckl: man
kanns auch ohne variants lösen.... man muss nur beim weiteren bearbeiten des results (der record) unterscheiden, ob das boolean false ist,
oder ob die anderen werte gesetzt sind...
edit2: jetzt wird die funktionsebene auch verlassen
Aenogym