Convertisseur delphi 7--> VB 2005

proctor83 Messages postés 4 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 4 décembre 2009 - 4 déc. 2009 à 10:05
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 4 déc. 2009 à 20:12
Bonjour à tous,
Je suis débutant et je voudrais convertir un code en delphi7 en VB 2005 donc j'aurais voulu savoir s'il existait un convertisseur ou alors est ce qq pourrait me le traduire ou m'aider??? (il n'est pas tres long).
Merci à tous.

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 déc. 2009 à 11:22
donne a lire, on verra bien

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
proctor83 Messages postés 4 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 4 décembre 2009
4 déc. 2009 à 12:39
Bonjour,

type

// Donné d'un élément sur la grille du plan d'eau
// Correspond à la hauteur et vitesse de l'eau en un point
TWave = record
height: double;
speed : double;
end;

* initWavesArray
*}
procedure TMainForm.initWavesArray();
var
x: integer;
begin
// Dimensionnement de l'array
setLength(waves, bitmapWidth+1);
for x:=0 to bitmapWidth do
setLength(waves[x], bitmapHeight+1);
end;

* initWavesData
*}
procedure TMainForm.initWavesData();
var
x: integer;
y: integer;
begin
// Modifier cette méthode pour avoir une configuration de vagues initiale
for x:=0 to bitmapWidth do
for y:=0 to bitmapHeight do
begin
waves[x, y].height := 0.0;
waves[x, y].speed := 0.0;
end;
end;

* simul
* Méthode régissant la propagation des ondes sur la grille
*}
procedure TMainForm.simul();
var
x: integer;
y: integer;

// Dérivées premieres
d1: double;
d2: double;

// Dérivée seconde
ddx: double;
ddy: double;

viscosity1: double;
begin
// Les bords de l'image ne sont pas calculés car leur calcul nécessitent des point de la grille
// qui sortent du tableau ( waves[x-1, y] par exemple ).
for x:=1 to bitmapWidth-1 do
for y:=1 to bitmapHeight-1 do
begin
// Formule du calcul:
// accèlération de la hauteur = double dérivée de la hauteur au point concerné
//
// d²h d²h d²h 1
// --- = ( --- + --- ) x ------------
// dt² dx² dy² wavesSpeed
//
// La dérivée de la hauteur représente la "pente" au point concerné.

// Traitement sur X
d1 := waves[x+1, y].height - waves[x, y].height; // Dérivée première à "droite" de x
d2 := waves[x, y].height - waves[x-1, y].height; // Dérivée première à "gauche" de x
ddx := d1 - d2; // Dérivée seconde en x

// Traitmement sur Y
d1 := waves[x, y+1].height - waves[x, y].height;
d2 := waves[x, y].height - waves[x, y-1].height;
ddy := d1 - d2;

waves[x, y].speed := waves[x, y].speed + ddx/wavesSpeed + ddy/wavesSpeed;
end;

// Application de la vitesse et de la viscosité
// Ce calcul ne peut pas être effectué dans la première boucle car les modifications seraient
// utilisées dans les calculs des cellules suivantes.
viscosity1 := 1.0-viscosity;
for x:=1 to bitmapWidth-1 do
for y:=1 to bitmapHeight-1 do
begin
waves[x, y].height := (waves[x, y].height + waves[x, y].speed)*viscosity1;
end;
end;

* simul edges
*
* Traitement des bords de la grille. Les valeurs des bords sont copiées depuis les points voisins
* de la grille afin d'obtenir la réflexion correcte des ondes. Sans cette étape les ondes seraient
* inversées lors de la réflexion, même si ce n'est pas très visible, ce n'est pas correcte :)
*}
procedure TMainForm.simulEdges();
var
x: integer;
begin
// Les points (0, 0) et (bitmapWidth, 0) sont traités dans la seconde boucle.
for x:=1 to bitmapWidth-1 do
begin
waves[x, 0] := waves[x, 1];
waves[x, bitmapHeight] := waves[x, bitmapHeight-1];
end;
for x:=0 to bitmapHeight do
begin
waves[0, x] := waves[1, x];
waves[bitmapWidth, x] := waves[bitmapWidth-1, x];
end;
end;

* ripple
*
* Cré une perturbation à la surface de l'eau en force de vague de rayon radius et d'amplitude
* height.
*}
procedure TMainForm.ripple(centerX, centerY, radius: integer; height: double);
var
x: integer;
y: integer;
begin
for x:=(centerX-radius) to centerX+radius-1 do
begin

if (x>=0) and (x<=bitmapWidth) then
for y:=centerY-radius to centerY+radius-1 do
begin

if (y>=0) and (y<=bitmapHeight) then
begin
// Forme de la perturbation obtenue à l'aide de la fonction cosinus
// ____
// __/ \__
// _/ \_
// / \
// _/ \_
// __/ \__
// _________/ \_________
waves[x, y].height := waves[x, y].height +( (Cos((x-centerX+radius)/(2*radius)*2*PI - PI)+1)*(Cos((y-centerY+radius)/(2*radius)*2*PI - PI)+1)*height );
end;

end;

end;
end;

* render
*}
procedure TMainForm.render();
var
x: integer;
y: integer;

background: PByteArray;
buffer : PByteArray;

// Refraction
dx: double;
dy: double;
light: integer;
xMap: integer;
yMap: integer;
begin
// Pour chaque colone
for y:=0 to bitmapHeight-1 do
begin
// Récupération de la colone du background et de l'image
//buffer := image.picture.bitmap.scanLine[y];

for x:=0 to bitmapWidth-1 do
begin
// Dérivée X et Y
dx := waves[x+1, y].height-waves[x, y].height;
dy := waves[x, y+1].height-waves[x, y].height;

// Calcul déformation
xMap := x + round(dx*(waves[x,y].height+depth));
yMap := y + round(dy*(waves[x,y].height+depth));

// Modification de xMap et yMap pour la faible résolution afin d'avoir une image de meme
// taille à l'écran qu'en haute résolution
if halfResolution then
begin
xMap := xMap * 2;
yMap := yMap * 2;
end;
end;

image.Refresh();
end;
event scrollBar2Change
*}
procedure TMainForm.ScrollBar2Change(Sender: TObject);
begin
depth := ScrollBar2.Position/10.0;
render();
end;

* event scrollBar3Change
*}
procedure TMainForm.ScrollBar3Change(Sender: TObject);
begin
viscosity := scrollBar3.Position/100;
end;

* event scrollBar4Change
*}
procedure TMainForm.ScrollBar4Change(Sender: TObject);
begin
wavesSpeed := scrollBar4.Position;
end;


Merci beaucoup
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 déc. 2009 à 13:42
rien de bien complexe en somme, quelques calculs assez basiques...

Un point précis qui te bloque dans ce code ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
proctor83 Messages postés 4 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 4 décembre 2009
4 déc. 2009 à 18:21
En fait lorsqu'il met "begin" ds le code je ne vois pas à quoi correspond ce mot ds VB. De même pour le mot "do".
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
proctor83 Messages postés 4 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 4 décembre 2009
4 déc. 2009 à 18:23
et est ce que "procedure" dans delphi correspond à "private sub" ds VB?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 déc. 2009 à 20:12
if halfResolution then
begin
xMap := xMap * 2;
yMap := yMap * 2;
end;

if halfResolution then
xMap = xMap * 2
yMap = yMap * 2
end If


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous