/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Kommunikation mellem programmer?
Fra : Thomas Eg Jørgensen


Dato : 14-03-03 08:23

Hej

Jeg vil gerne lave et par forskellige programmer som skal køre på den samme
computer. Programmerne skal kunne køre uafhængigt af hinanden men samtidigt
skal de kunne kommunikere med hinanden. Jeg ønsker altså at have mulighed
for at programmerne kan "snakke" med hinanden.

Hvordan gør jeg bedst dette?

--
MVH Thomas Eg Jørgensen

** OE Quotefix: http://home.in.tum.de/~jain/software/oe-quotefix/ **
** Kandu.dk-brugere betragtes som useriøse og ignoreres! **



 
 
Finn Bindeballe (14-03-2003)
Kommentar
Fra : Finn Bindeballe


Dato : 14-03-03 08:29

hej der.........

det kommer an paa hvor meget de skal 'snakke'.... hvis det kun er nogle simple
beskeder, saa kan du jo bruge windows-messages.

jeg bruger af og til UDP-sockets hvis der er meget der skal udvekles, og det
har den fordel at du kan køre det paa flere forskelige maskiner...

/finn


Claus Christiansen (14-03-2003)
Kommentar
Fra : Claus Christiansen


Dato : 14-03-03 08:58

Finn Bindeballe <finnb@post6.tele.dk> wrote in
news:3E7184BA.B0840F25@post6.tele.dk:

>>Jeg vil gerne lave et par forskellige programmer som skal køre på den
>>samme computer. Programmerne skal kunne køre uafhængigt af hinanden men
>>samtidigt skal de kunne kommunikere med hinanden.
>
> det kommer an paa hvor meget de skal 'snakke'.... hvis det kun er
> nogle simple beskeder, saa kan du jo bruge windows-messages.
>
> jeg bruger af og til UDP-sockets hvis der er meget der skal
> udvekles, og det har den fordel at du kan køre det paa flere
> forskelige maskiner...

Eller hvis der er tale om de "blot" skal have kommunikere ved at have
adgang til fælles adresserum og der ikke er brug for kommunikation mellem
flere maskiner, så er memory mapping også en mulighed.

/Claus

--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: <http://unipeople.dk/~cch>; pythia: <http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso

Thomas Eg Jørgensen (14-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 14-03-03 09:11




"Claus Christiansen" <NOSPAM@unipeople.dk> wrote in message
news:Xns933E5B2034143krucsid@news.unipeople.dk...
> >>Jeg vil gerne lave et par forskellige programmer som skal køre på den
> >>samme computer. Programmerne skal kunne køre uafhængigt af hinanden men
> >>samtidigt skal de kunne kommunikere med hinanden.
> >
> > det kommer an paa hvor meget de skal 'snakke'.... hvis det kun er
> > nogle simple beskeder, saa kan du jo bruge windows-messages.
>
> Eller hvis der er tale om de "blot" skal have kommunikere ved at have
> adgang til fælles adresserum og der ikke er brug for kommunikation mellem
> flere maskiner, så er memory mapping også en mulighed.
>

Oki, jeg kommer lige med lidt mere information så

Sagen er den at brugerne af mit program benytter sig at lidt ældre
programmer(enkelte dos-programmer!) og disse har ikke rigtig nogen mulighed
for at snakke med mit windowsprogram. Dog kan alle disse programmer lave
nogle tekstfiler som indeholder de data som de ønsker at sende til mit
program. Det kunne f.eks. være kundedata fra et kunde kartotek eller
vareinformation fra en lagerstyring. Disse data bliver lagt i en tekstfil og
så har alle programmerne mulighed for at køre et eksternt program. Dette
eksterne program ville jeg så lave som en lille applikation der læser
datafilen, organisere data'ene og så sender dem til mit hovedprogram som så
derefter ved hvordan disse data skal håndteres.

Med hensyn til datamængden er det ofte ret beskedent, f.eks. kunne de være
kundenr, navn, adrssse, telefon osv. Alle data skal sendes til
hovedprogrammet efterfulgt af en kommando med hvad der skal ske med disse
data(skal kunden oprettes? ønsker man at vise kundes detaljer? ønsker man at
vise kunden's ordreliste? osv). Pointen er så at når brugere i f.eks. hans
kundekartotek klikker på en knap så bliver data fra kunden sendt over i mit
program og kundens data bliver så præsenteret på den måde om "hans knap" er
konfigureret til....

Håber det blev en smule klarer...?

--
MVH Thomas Eg Jørgensen

** OE Quotefix: http://home.in.tum.de/~jain/software/oe-quotefix/ **
** Kandu.dk-brugere betragtes som useriøse og ignoreres! **



Lars B. Dybdahl (14-03-2003)
Kommentar
Fra : Lars B. Dybdahl


Dato : 14-03-03 09:28

Jeg vil anbefale memory-filer og Windows messages i en kombination, da disse
er lokale for brugeren på flerbruger installationer, fordi de er rimelig
nemme at have med at gøre, og fordi performance er høj. Jeg bruger det selv
i flere projektet, og det virker ufatteligt godt.

Lars.

--
Freelance programmør
Dybdahl Engineering: http://dybdahl.dk/
Delphi brugergruppen DAPUG: http://dapug.dk/
Delphi oversættelsesværktøjer: http://dxgettext.sf.net/

Thomas Eg Jørgensen (14-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 14-03-03 18:16

"Lars B. Dybdahl" <Lars@dybdahl.dk> wrote in message
news:3e719287$0$42619$edfadb0f@dread11.news.tele.dk...
> Jeg vil anbefale memory-filer og Windows messages i en kombination, da
disse
> er lokale for brugeren på flerbruger installationer, fordi de er rimelig
> nemme at have med at gøre, og fordi performance er høj. Jeg bruger det
selv
> i flere projektet, og det virker ufatteligt godt.
>

Memoryfiler? Kan du uddybe en smule?

--
MVH Thomas Eg Jørgensen

** OE Quotefix: http://home.in.tum.de/~jain/software/oe-quotefix/ **
** Kandu.dk-brugere betragtes som useriøse og ignoreres! **



David Konrad (14-03-2003)
Kommentar
Fra : David Konrad


Dato : 14-03-03 18:22

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:b4t2p2$n0$1@sunsite.dk...

> Memoryfiler? Kan du uddybe en smule?

Der findes en glimrende indførende artikel om emnet på
http://www.pythia.dk/ ->artikler->Memory Mappings i Delphi



Lars B. Dybdahl (14-03-2003)
Kommentar
Fra : Lars B. Dybdahl


Dato : 14-03-03 19:39

David Konrad wrote:
>> Memoryfiler? Kan du uddybe en smule?
> Der findes en glimrende indførende artikel om emnet på

Memory mapped filer og memory filer er ikke det samme.

Lars.

--
Freelance programmør
Dybdahl Engineering: http://dybdahl.dk/
Delphi brugergruppen DAPUG: http://dapug.dk/
Delphi oversættelsesværktøjer: http://dxgettext.sf.net/

David Konrad (14-03-2003)
Kommentar
Fra : David Konrad


Dato : 14-03-03 20:05

"Lars B. Dybdahl" <Lars@dybdahl.dk> wrote in message
news:3e72219b$0$42663$edfadb0f@dread11.news.tele.dk...
> David Konrad wrote:
> >> Memoryfiler? Kan du uddybe en smule?
> > Der findes en glimrende indførende artikel om emnet på
>
> Memory mapped filer og memory filer er ikke det samme.

Har du overhovedet læst artiklen?



Lars B. Dybdahl (14-03-2003)
Kommentar
Fra : Lars B. Dybdahl


Dato : 14-03-03 21:55

David Konrad wrote:
> Har du overhovedet læst artiklen?

Ja, men jeg snakker ikke om mapping.

Lars.

--
Freelance programmør
Dybdahl Engineering: http://dybdahl.dk/
Delphi brugergruppen DAPUG: http://dapug.dk/
Delphi oversættelsesværktøjer: http://dxgettext.sf.net/

Thomas Eg Jørgensen (15-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 15-03-03 08:53

"Lars B. Dybdahl" <Lars@dybdahl.dk> wrote in message
news:3e72418a$0$42590$edfadb0f@dread11.news.tele.dk...
> > Har du overhovedet læst artiklen?
> Ja, men jeg snakker ikke om mapping.
>

Jeg har læst noget om beskeden WM_COPYDATA, kan den ikke gøre lidt af det
samme lidt nemmere?



--
MVH Thomas Eg Jørgensen

** OE Quotefix: http://home.in.tum.de/~jain/software/oe-quotefix/ **
** Kandu.dk-brugere betragtes som useriøse og ignoreres! **



David Konrad (15-03-2003)
Kommentar
Fra : David Konrad


Dato : 15-03-03 19:12

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:b4um4p$sfv$1@sunsite.dk...

> Jeg har læst noget om beskeden WM_COPYDATA, kan den ikke gøre lidt af det
> samme lidt nemmere?

Joda, og du kan sende mange forskellige datatyper på denne måde, via
TCopyDataStruct. Her et eksempel der virker, som sender en lille streng
mellem to forskellige programmer. Senderprogrammet kalder jeg SndWMCopy -
det indeholder blot en knap, der sender en tekst til modtagerformen;
modtagerprogrammet kalder jeg RcvWMCopy, som kun indholder en messagehandler
samt en label den modtagede tekst kopieres over i .

SndWMCopy (form)
--------------------------
unit FSndWMCopy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm11 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.Button1Click(Sender: TObject);
var C : TCopyDataStruct;
H : Integer;
S : String;
begin
S:='Hej med dig, du der andet program';
H:=FindWindow(nil,'RcvWMCopy'); //navn på modtagerprograms vindue
C.cbData := succ(length(S));
C.dwData := 1;
C.lpData := @S[1];

//send til modtagerprogram
SendMessage(H, WM_COPYDATA,3,integer(@C));
end;

end.

[--------]

RcvWMCopy (form)
--------------------------

unit FRcvWMCopy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm10 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
procedure WMCopyData(var Msg:TWMCopyData); message WM_COPYDATA;
end;

var
Form10: TForm10;

implementation

{$R *.dfm}

{ TForm10 }

procedure TForm10.WMCopyData(var Msg: TWMCopyData);
var i: Integer;
S: String;
begin
Msg.result := 0; //husk!
if StrLen(PChar(msg.CopyDataStruct^.lpData)) > 0 then
begin
Msg.result := 12345; //sæt flag
S := PChar(msg.CopyDataStruct^.lpData);
Label1.Caption := S;
end;
end;

end.

------------
Du kan udvide det her eksempel ud i det uendelige, med datatype check,
validering [Msg.result kan jo returnere errorcodes] og så fremdeles. Håber
det hjalp.



Thomas Eg Jørgensen (15-03-2003)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 15-03-03 19:35

David Konrad wrote:
>> Jeg har læst noget om beskeden WM_COPYDATA, kan den ikke gøre lidt
>> af det samme lidt nemmere?
> Du kan udvide det her eksempel ud i det uendelige, med datatype check,
> validering [Msg.result kan jo returnere errorcodes] og så fremdeles.
> Håber det hjalp.

Hej, jeg legede lidt med det og det spiller max. Er der andet ud over
returnværdien jeg skal tænke på? Hvad med platformsafhængighed? med hensyn
til 95/98/2x/xp ?


--
MVH Thomas Eg Jørgensen

** OE Quotefix: http://home.in.tum.de/~jain/software/oe-quotefix/ **
** Kandu.dk-brugere betragtes som useriøse og ignoreres! **



David Konrad (15-03-2003)
Kommentar
Fra : David Konrad


Dato : 15-03-03 19:55

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:b4vrom$2q8$1@sunsite.dk...
> David Konrad wrote:
> >> Jeg har læst noget om beskeden WM_COPYDATA, kan den ikke gøre lidt
> >> af det samme lidt nemmere?
> > Du kan udvide det her eksempel ud i det uendelige, med datatype check,
> > validering [Msg.result kan jo returnere errorcodes] og så fremdeles.
> > Håber det hjalp.
>
> Hej, jeg legede lidt med det og det spiller max. Er der andet ud over
> returnværdien jeg skal tænke på? Hvad med platformsafhængighed? med hensyn
> til 95/98/2x/xp ?

WM_COPYDATA har været en del af windows-messageAPI'et siden win95/NT 3.1 og
frem - så det behøver du overhovedet ikke bekymre dig om - ejheller at den
skulle forsvinde i næste version.

Hvis du skal "tænke" på noget, er det nok at

* du altid skal kopiere indholdet over i lokale veriable
* du ikke må free'e eller på anden måde ændre indholdet af TWMCopyData
recorden'en - udover result
* modtagerprogrammet skal være istand til at genkende indholdet (ifald du
overfører objekter etc)




David Konrad (15-03-2003)
Kommentar
Fra : David Konrad


Dato : 15-03-03 19:13

"Lars B. Dybdahl" <Lars@dybdahl.dk> wrote in message
news:3e72418a$0$42590$edfadb0f@dread11.news.tele.dk...
> David Konrad wrote:
> > Har du overhovedet læst artiklen?
>
> Ja, men jeg snakker ikke om mapping.

Jeg kunne godt tænke mig at se et eksempel "memory filer" uden brug af
mappings...?



Lars B. Dybdahl (14-03-2003)
Kommentar
Fra : Lars B. Dybdahl


Dato : 14-03-03 19:38

Thomas Eg Jørgensen wrote:
> Memoryfiler? Kan du uddybe en smule?

En memory fil er et stykke hukommelsesområde, som har en Windows fil handle,
men som ikke er knyttet til nogen harddisk på nogen måde.

Fidusen er, at denne filhandle er gyldig på tværs af programmer, så du kan
sende den til et andet program via en Windows message, hvorefter to
programmer er fælles om dette hukommelsesområde. På den måde kan man
overføre store datamængder hurtigt.

Lars.

--
Freelance programmør
Dybdahl Engineering: http://dybdahl.dk/
Delphi brugergruppen DAPUG: http://dapug.dk/
Delphi oversættelsesværktøjer: http://dxgettext.sf.net/

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409084
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste