begin process at 2010 02 10 11:10:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Conversion Dxx vers D6


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Conversion Dxx vers D6

dimanche 8 octobre 2006 à 14:55:55 | Conversion Dxx vers D6

basile9

Bonjour

Je me lance avec Delphi Personal 6 dans une application mode console.
J'essaie de compiler le programme exemple suivant (trouvé sur un site anglais datant de 1997)

-------------------------------------------------
| program Con001;
| {$APPTYPE CONSOLE}
| uses Windows, SysUtils;
|
| const
| // Some common colors
|  YellowOnBlue = FOREGROUND_GREEN OR FOREGROUND_RED OR
|                 FOREGROUND_INTENSITY OR BACKGROUND_BLUE;
|  WhiteOnBlue  = FOREGROUND_BLUE OR FOREGROUND_GREEN OR
|                 FOREGROUND_RED OR FOREGROUND_INTENSITY OR
|                 BACKGROUND_BLUE;
|  RedOnWhite   = FOREGROUND_RED OR FOREGROUND_INTENSITY OR
|                 BACKGROUND_RED OR BACKGROUND_GREEN OR BACKGROUND_BLUE
|                 OR BACKGROUND_INTENSITY;
|  WhiteOnRed   = BACKGROUND_RED OR BACKGROUND_INTENSITY OR
|                 FOREGROUND_RED OR FOREGROUND_GREEN OR FOREGROUND_BLUE
|                 OR FOREGROUND_INTENSITY;
|
| var
|  ConHandle  : THandle; // Handle to console window
|  Coord      : TCoord;  // To store/set screen position
|  MaxX, MaxY : Word;    // To store max window size
|  CCI        : TConsoleCursorInfo;
|  NOAW       : LongInt; // To store results of some functions
|
| //-----------------------------------------
| //      Get handle to console input
| //-----------------------------------------
| function GetConInputHandle : THandle;
| begin
|  Result := GetStdHandle(STD_INPUT_HANDLE)
| end;
| //-----------------------------------------
| //      Get handle to console output
| //-----------------------------------------
| function GetConOutputHandle : THandle;
| begin
|  Result := GetStdHandle(STD_OUTPUT_HANDLE)
| end;
| //-----------------------------------------
| //        Position cursor to X, Y
| //-----------------------------------------
| procedure GotoXY(X, Y : Word);
| begin
|  Coord.X := X; Coord.Y := Y;
|  SetConsoleCursorPosition(ConHandle, Coord);
| end;
| //-----------------------------------------
| //   Clear Screen - fill it with spaces
| //-----------------------------------------
| procedure Cls;
| begin
|  Coord.X := 0; Coord.Y := 0;
|  FillConsoleOutputCharacter(ConHandle, ' ', MaxX*MaxY, Coord, NOAW);
|  GotoXY(0, 0);
| end;
| //--------------------------------------
| //           Show/Hide cursor
| //--------------------------------------
| procedure ShowCursor(Show : Bool);
| begin
|  CCI.bVisible := Show;
|  SetConsoleCursorInfo(ConHandle, CCI);
| end;
| //--------------------------------------
| //     Initialize global variables
| //--------------------------------------
| procedure Init;
| begin
| // Get console output handle
|  ConHandle := GetConOutputHandle;
| // Get max window size
|  Coord := GetLargestConsoleWindowSize(ConHandle);
|  MaxX := Coord.X;
|  MaxY := Coord.Y;
| end;
| //---------------------------------------
| //          Draw "status line"
| //---------------------------------------
| procedure StatusLine(S : String);
| begin
|  Coord.X := 0; Coord.Y := 0;
|  WriteConsoleOutputCharacter(ConHandle, PChar(S),   Length(S)+1, Coord, NOAW);
|  FillConsoleOutputAttribute (ConHandle, WhiteOnRed, Length(S),   Coord, NOAW);
| end;
|
| //-----------------------------------------------------
| //               Console Event Handler
| //-----------------------------------------------------
| function ConProc(CtrlType : DWord) : Bool; stdcall; far;
| var
|  S : String;
| begin
|  case CtrlType of
|    CTRL_C_EVENT        : S := 'CTRL_C_EVENT';
|    CTRL_BREAK_EVENT    : S := 'CTRL_BREAK_EVENT';
|    CTRL_CLOSE_EVENT    : S := 'CTRL_CLOSE_EVENT';
|    CTRL_LOGOFF_EVENT   : S := 'CTRL_LOGOFF_EVENT';
|    CTRL_SHUTDOWN_EVENT : S := 'CTRL_SHUTDOWN_EVENT';
|   else
|    S := 'UNKNOWN_EVENT';
|  end;
|  MessageBox(0, PChar(S + ' detected'), 'Win32 Console', MB_OK);
|  Result := True;
|  end;
| {
| []---------------------------------------------------------------[]
|   Main program - shows usage of some subroutines above and some
|   of console API functions
| []---------------------------------------------------------------[]
| }
| var
|  R        : TSmallRect;
|  Color    : Word;
|  OSVer    : TOSVersionInfo;
|  IBuff    : TInputRecord;
|  IEvent   : DWord;
|  Continue : Bool;
|
| begin
| // Initialize global variables
|  Init;
| // Position window on screen
|  With R do
| {!! 1.01 !!}
|  begin
|   Left  := 10;  Top    := 10; Right := 40;  Bottom := 40;
|  end;
| {!! 1.01 !!}
|  SetConsoleWindowInfo(ConHandle, False, R);
| // Set event handler
|  SetConsoleCtrlHandler(@ConProc, True);
| // Check event handler
| GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
| // Change window title
|  SetConsoleTitle('Console Demo');
| // Hide cursor
|  ShowCursor(False);
|  Coord.X := 0; Coord.Y := 0;
| // Set white text on blue
|  Color := WhiteOnBlue;
|  FillConsoleOutputAttribute(ConHandle, Color, MaxX*MaxY, Coord, NOAW);
| // Console Code Page API is not supported under Win95 - only GetConsoleCP
|  Writeln('Console Code Page = ', GetConsoleCP);
|  Writeln('Max X=', MaxX,' Max Y=', MaxY);
|  Readln;            // wait for user input
|  Cls;               // clear screen
|  ShowCursor(True);  // show cursor
|  //
|  // Use some Win32API stuff
|  //
|  OSVer.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
|  GetVersionEx(OSVer);
|  With OSVer do
|   Begin
|    Writeln('dwMajorVersion = ', dwMajorVersion);
|    Writeln('dwMinorVersion = ', dwMinorVersion);
|    Writeln('dwBuildNumber  = ', dwBuildNumber);
|    Writeln('dwPlatformID   = ', dwPlatformID);
|   End;
|
| //
|  Readln;           // wait for user input
| // Remove event handler
|  SetConsoleCtrlHandler(@ConProc, False);
|  Cls;
| //
| // "Message Loop"
| //
|  Continue := True;
|  While Continue do
|  Begin
|   ReadConsoleInput(GetConInputHandle, IBuff, 1, IEvent);
|   Case IBuff.EventType of
|    KEY_EVENT   : Begin
| // Check for ESC Key and terminate program
|                    If ((IBuff.KeyEvent.bKeyDown = True) AND
|                        (IBuff.KeyEvent.wVirtualKeyCode = VK_ESCAPE)) Then
|                        Continue := False;
|                   End;
|    _MOUSE_EVENT : Begin
|                    With IBuff.MouseEvent.dwMousePosition do
|                     StatusLine(Format('%d, %d', [X, Y]));
|                   End;
|   end;
|  End {While}
| end.
| -----------------------------------------------------------------

Mais je suis bien refroidi par la volée d'erreur suivantes à la compilation

----------------------------------------------------------------------------
| [Erreur] Project1.dpr(54): Les types des paramètres VAR originaux et formels doivent être identiques
| [Erreur] Project1.dpr(83): Les types des paramètres VAR originaux et formels doivent être identiques
| [Erreur] Project1.dpr(84): Les types des paramètres VAR originaux et formels doivent être identiques
| [Erreur] Project1.dpr(142): Les types des paramètres VAR originaux et formels doivent être identiques
| [Erreur] Project1.dpr(177): Identificateur non déclaré : 'KeyEvent'
| [Erreur] Project1.dpr(182): Identificateur non déclaré : 'MouseEvent'
| [Erreur] Project1.dpr(182): 'DO' attendu(e) mais identificateur 'dwMousePosition' trouvé(e)
| [Erreur] Project1.dpr(187): Type Record, Object ou Class requis
| [Erreur] Project1.dpr(192): 'END' attendu(e) mais fin de fichier trouvé(e)
---------------------------------------------------------------------------

J'ai bien lu les explications de ces erreurs, mais cela ne m'a pas avancé..

Un Delphinaute pourrait-il me dire comment trouver une solution pour faire fonctionner ce programme en D6?

Merci d'avance.


dimanche 8 octobre 2006 à 16:56:01 | Re : Conversion Dxx vers D6

Emandhal

u,

Sous D7, FillConsoleOutputCharacter demande comme paramère pourle paramètre "Var lpNumberOfCharsWritten: Cardinal" or il est déclaré comme ceci : "NOAW: LongInt;" il suffit donc de changer en "NOAW: Cardinal;" (ligne 54, 83 et 84)

Pour ce qui est de "KeyEvent" et de "MousePosition" il suffit de faire ca :
- (Ligne 177) IBuff.Event.KeyEvent
- (Ligne 182) IBuff.Event.MouseEvent
Une rapide recherche sur les déclarations attendues et sur les types définis te donneraient la réponse (MAJ+ClickGauche)

Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...

dimanche 8 octobre 2006 à 16:58:25 | Re : Conversion Dxx vers D6

Emandhal

Petite correction :

Sous D7, FillConsoleOutputCharacter demande comme paramère "Var lpNumberOfCharsWritten: Cardinal" or il est déclaré comme ceci (ligne 24): "NOAW: LongInt;" il suffit donc de changer en "NOAW: Cardinal;" (lignes corrigées: 54, 83 et 84)

Tout problème a sa solution... Mais en général, celle que l'on trouve n'est jamais la bonne...

dimanche 8 octobre 2006 à 17:32:36 | Re : Conversion Dxx vers D6

basile9

Merci Emandhal, c'est vraiment sympa de me répondre. J'ai bien fait du TurboPascal, mais je suis un peu perdu avec Delphi.. Je vais appliquer les corrections. PS Ta conclusion philosophique s'applique d'autant plus que l'on est novice ;-)


Cette discussion est classée dans : end, begin, event, coord, foreground


Répondre à ce message

Sujets en rapport avec ce message

probleme dans mon programme [ par tarik ] monsieur kerad je crois que j'ai un bug dans mon programme ci-dessousprocedure TForm1.Button1Click(Sender: TObject);begintable1.open;try Table1.First Datamodule et accès à partir d'une form [ par manudel ] Voilà, je voudrais avoir accès aux événements des objets figurant sur mon datamodule, mais je n'y arrive pas. J'ai l'erreur suivante : "le type de l'e Index d'un table Dbase [ par webazard ] Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche Hints dans une DLL [ par almi ] J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T Code 1 à tester [ par apz ] salut a tous,je voulais faire un filtrage sur une table en utlisant les numeros d'enregistrements pour marquer les record et ensuite applique une requ Champs Chamboulés [ par apz ] Salut,1- En voulant avoir une table *.DB à partir d'une table *.DBF, en utilisant le Module Base de Données (Outils/Utilitaires/Copier), j'avais dans Erreur incomprehensible [ par intello2001 ] j'ai lerreur suivante :Unsatisfied forward or external declaration: Tform1....je pesne que c une kestion de end et begin dans mon code : else if TServerSocket en Multithread [ par Cyrille2 ] Salut... je bloque à mort sur un bug... en faite, impossible de lire le socketstream voila la procédure : Code: procedure TServerThread.ClientExecute; Déplacement [ par MAsterC ] Bonjourj'ai besoin d'information en Delphij'ai fait ceci !procedure TModule.TitleBarMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begi pb avec direct x, y'a pas d'erreur mais ça marche pas ! :-( [ par dweis ] j'essaie de faire un truc assez simple mais j'ai du mal : je veux juste créer une fenetre et initialiser directx.je me suis inspiré de ce code http://


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales