Prev Next Up Title Contents Index

Parametrin välitys

Edellisen esimerkin aliohjelmat on kirjoitettu omaan tiedostoonsa, joka C++:ssa pitää muistaa linkittää mukaan. Otsikkotiedostossahan on tiedot vain kääntämistä varten. Pascalin unitissa on sekä otsikkotiedot päämodulin kääntämiseksi, että varsinainen toteutus. Tarvittaessa voidaan tietysti jakaa käännettyä modulia (ali.dcu, Delphi Compiled Unit).

esim1.hpp - C++ otsikkotiedosto

	#ifndef ALI_HPP
	#define ALI_HPP
	double average(int a, int b);
	int bigger(int a, int b);
	void swap(int &a,int &b);
	#endif

ali.cpp - C++ aliohjelmat

	#include "ali.hpp"
	
	double average(int a, int b)
	{
	  return (a+b)/2.0;
	}
	
	int bigger(int a, int b)
	{
	  if ( a > b ) return a;
	  return b;
	}
	
	// Vaihdetaan luvut keskenään
	void swap(int &a,int &b)
	{
	  int t;
	  t = a; a = b; b = t;
	}

ali.pas - Pascal aliohjelmat

	unit Ali;
	
	interface
	
	  function average(a,b:integer):real;
	  function bigger(a,b:integer):integer;
	  procedure swap(var a,b:integer);
	
	implementation
	
	function average(a,b:integer):real;
	begin
	  average := (a+b)/2.0;
	end;
	
	function bigger(a,b:integer):integer;
	begin
	  bigger := b;
	  if ( a > b ) then bigger := a;
	end;
	
	{ Vaihdetaan luvut keskenään }
	procedure swap(var a,b:integer);
	var t:integer;
	begin
	  t := a; a := b; b := t;
	end;
	
	end. { Unitin lopetus } 
end.
		function bigger(a,b:integer):integer;
		begin
		  Result := b;
		  if ( a > Result ) then Result := a;
		end;
Malliohjelma saadaan toimimaan muuttamattomana myös Delphi 2.0:ssa seuraavasti:
1.
Kirjoitetaan tiedosto WinCRT.pas Delphin lib - hakemistoon:
		unit WinCRT;
		interface
		implementation
		initialization 
		finalization
		  readln; { Tämä jos halutaan pysähtyvän ennen ohjelman loppua }
		end.
2.
Laitetaan päälle optio: Project|Options|Linker|Generate console application. Tämä voitaisiin korvata myös lisäämällä ohjelman alkuun kääntäjän optiorivi {$APPTYPE CONSOLE}, mutta tällöin ohjelma ei kääntyisi Delphi 1.0:ssa ilman virheitä. unittiin laitettuna tämä koodissa oleva optio ei hyödytä kuin niillä kerroille, jolloin koko ohjelma rakennetaan uudelleen (build all).
3.
valitettavasti konsoliohjelman pääohjelmaa ei jostakin syystä voi debugata Delphi 2.0:ssa, aliohjelmia voi kyllä, mikäli niihin laittaa keskeytyskohdan
4.
kun ohjelma ajetaan, avautuu konsoli- ikkuna, joka sulkeutuu ohjelman lopuksi. Jos ikkuna halutaan jäävän näkyväksi, voidaan WinCRT:n lopettamisosaan tai ohjelman loppuun tilapäisesti laittaa kutsu readln.


Prev Next Up Title Contents Index