Autor Beitrag
no-one
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 16:42 
Hallo zusammen. Bin neu hier. Erstmal ein "Hallo" an alle. :)

Bin in Delphi noch nicht so ganz fit, habe mir aber vorgenommen, ein kleines Programm in Delphi zu coden, mit dem ich über eine Webcam einen Raum überwachen kann.
Jetzt stellt sich mir das Problem, dass ich nicht weiß, wie ich einen Webcam-Stream abfrage.
Also hab ich mir einen Sourcecode besorgt und kann den aber nicht starten.

Habe in eurem Board auch diesem Beitrag gefunden: www.delphi-forum.de/viewtopic.php?t=19282

Die Probleme darin sind meinen sehr ähnlich. Leider finde ich keine Lösung :(

Ich Poste mal mein Problem. Vielleicht kann mir jemand helfen:

ausblenden Quelltext
1:
2:
3:
4:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, Buttons, ComCtrls,
  VideoCap, VideoMci, MMSystem, ButtonComps, XP_Form, XP_Edit;


Ich finde nichts über "VideoMci" und "VideoCap". Weder im Web noch in der Delphi-Hilfe. Was sind das für Komponenten?

Und dann bekomme ich diese Fehler:

[Fataler Fehler] WVideo.pas(8): Datei nicht gefunden: 'VideoCap.dcu'
[Fataler Fehler] WVideo.pas(8): Datei nicht gefunden: 'VideoMci.dcu'

Denn die DCU-Files wurden nicht zum Sourcecode gepackt und sind nicht auf meiner Platte.

Gibt es irgendeine Lösung?

Wäre toll.

Danke

Chris
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 06.11.04 16:52 
Du findest die VideoCap deswegen nirgendwo im Internet, weil es eine selbsterstellte Unit ist. Du hat hier selbst auf den Beitrag hingeweiesen. In diesem Beitrag hibt es eine Unit als Beispiel und die heißt VideoCap.pas. Allerdings, wenn du schon bei sowas Probleme hast, dann weiß ich nicht ob du dich an so ein Projekt drannhängen solltest.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 17:21 
Hallo.
Danke erstmal für deine Antwort.
Ja, die beiden pas-Files habe ich auch. Allerdings sind die Sources aus einer anderen Quelle.

Ob ich wirklich an dieses Projekt rangehe, weiß ich ja selbst noch nicht.
Trotzdem wäe es nett, wenn ich eine Hilfestellung bekäme, wie es möglich ist, das Proramm zu kompilieren.

Danke
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 06.11.04 17:56 
no-one hat folgendes geschrieben:
Ja, die beiden pas-Files habe ich auch. Allerdings sind die Sources aus einer anderen Quelle.


Was hat die andere Quelle damit zu tun? Unit ist Unit, egal woher. Du muß die Unit nur in das Projekt einfügen. Allerdings muß die PAS Datei und der Unit Titel eben VideoCap heißen. Es gibt zwei Möglichkeiten wie du die Unit in des Projekt eifügst. Die Unit in das Projektverzeichnis kopieren und unter Uses die Unit eintragen (was du allerdins bereits gemacht hast). Oder in Delphi über Projektverwaltung die Unit hinzufügen.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 18:29 
bms hat folgendes geschrieben:
no-one hat folgendes geschrieben:
Ja, die beiden pas-Files habe ich auch. Allerdings sind die Sources aus einer anderen Quelle.


Was hat die andere Quelle damit zu tun? Unit ist Unit, egal woher. Du muß die Unit nur in das Projekt einfügen. Allerdings muß die PAS Datei und der Unit Titel eben VideoCap heißen. Es gibt zwei Möglichkeiten wie du die Unit in des Projekt eifügst. Die Unit in das Projektverzeichnis kopieren und unter Uses die Unit eintragen (was du allerdins bereits gemacht hast). Oder in Delphi über Projektverwaltung die Unit hinzufügen.


Hallo. Also entweder bin ich zu doof, oder wir reden aneinander vorbei.

Die Sources die ich habe, beinhalten die Files VideoCap.pas und VideoMci.pas und diese sind ja auch im Projektverzeichnis, mitsamt allen anderen Projekt-Dateien. Eingebunden sind sie im Projekt über den Uses-Teil. Und als Titel haben sie Unit VideoCap und Unit VideoMci.

Gruss

Chris
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 06.11.04 18:38 
Dann:

a. Im Menü Projekte auf "Projekt neu ompilieren". Wenn nicht da, dann

b. Im Menü Projekte auf "Compilieren".

Alternativ:

c. Alle DCUs im Projektordner und Unterordenrn löschen. Dann wird automatisch neu kompiliert und alle DCUs werden neu erstellt.

Ich weiß nicht ob es das Problem ist, aber gelegentlich weigert sich Delphi alles neu zu kompilieren, weil es glubt, daß an einer DCU nichts verändert wurde. Wurde die DCU aber gelöscht, dann fehlt sie. DCU ist eine komplieret PAS.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 18:52 
Hi wieder.

Ich stecke immernoch fest.

A. funktioniert nicht, weil "neu compilieren" nicht existiert.
B. funktioniert nicht, denn Delphi beschwert sich, dass VideoCap.dcu nicht gefunden wurde.
C. verursacht das gleiche Problem. Obwohl alle DCU´s gelöscht sind, bleibt der Debugger im Uses-Teil bei "VideoCap" stehen.
Vermutlich würde es helfen, wenn ich alles neu compilieren könnte. Doch die Option bietet sich nicht.

Gruss

Chris

P.S. ich gebs gleich auf. :(
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Sa 06.11.04 19:53 
Wenn alles nicht funktioniert, kannst du ja mal diesen komplett anderen code probieren, es werden dabei auch keine andere units benötigt:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    handle : tHandle;
  end;

var
  Form1: TForm1;

Const
  WM_CAP_DRIVER_CONNECT  = WM_USER + 10;
  WM_CAP_EDIT_COPY       = WM_USER + 30;
  WM_CAP_SET_PREVIEW     = WM_USER + 50;
  WM_CAP_SET_OVERLAY     = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

implementation

{$R *.dfm}

function capCreateCaptureWindow(lpszWindowName  : LPCSTR;
                                dwStyle         : DWORD;
                                x, y,
                                nWidth,
                                nHeight         : integer;
                                hwndParent      : HWND;
                                nID             : integer ): HWND; stdcall;
                                external 'AVICAP32.DLL' name 'capCreateCaptureWindowA';

procedure TForm1.FormCreate(Sender: TObject);
begin
  handle:=capCreateCaptureWindow('Video', ws_child + ws_visible, 0, 0, 320, 240, Panel1.Handle, 1);
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0 );
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0 );
  //sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0 );
  SendMessage(handle, wm_cap_set_preview, 1, 0 );
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  SendMessage( handle, WM_CAP_EDIT_COPY, 1, 0 );
  image1.Picture.LoadFromClipboardFormat( cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap),0)
end;

end.
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 22:45 
Hallo Phantom.

Vielen Dank

Werde es mal probieren.

Gruss

no-one
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: Sa 06.11.04 23:01 
Wenn er an "VideoCap" stehen bleibt, dann feht das wahrscheinlich. Wahrscheinlich glaubst du, daß es für den Compiler ereichbar ist. Vielleicht hast du die Unit kopiert, sie in eine Textdatei geschreiben und da steht "VideoCap.txt.pas". Also irgendwas stimmt mit deiner Datei nicht.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 06.11.04 23:50 
Hi.

Nein, also ganz unfähig bin ich auch nicht ;)
Habe nichts umbenannt, kopiert oder sonstwas gemacht.

Nur das Zip-Archiv entpackt und die Button/XP-Style Komponenten installiert, das DPR-File gestartet, und dann versucht in Delphi zu compilieren.

Aber wer will, kann sich ja gern mal selbst überzeugen:


www.planetsourcecode...eId=707&lngWId=7

Gruss

Chris
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: So 07.11.04 00:31 
Die ABC sollte kein Ablaufplan sein, sondern eines von drei Möglichkeiten.

Aber wie schon gesagt: irgendwas stimmt mit deiner Datei nicht. Und zwar liegt das an der Projektdatei:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
program CapMci;

uses
  Forms,
  WVideo in 'WVideo.pas' {Video},
  VideoCap in '..\..\Programmeerimine\capmci\VideoCap.pas',
  VideoMci in '..\..\Programmeerimine\capmci\VideoMci.pas',
  mmaoi in '..\..\Programmeerimine\Kalender uusim\mmaoi.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TVideo, Video);
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Wie du siehst sind da Pfade und die Pfade gibt es nicht. Die "VideoCap.pas" ist gleich in deinem Projektordner. Also das ganze kürzen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
program CapMci;

uses
  Forms,
  WVideo in 'WVideo.pas' {Video},
  VideoCap in 'VideoCap.pas',
  VideoMci in 'VideoMci.pas',
  mmaoi in 'mmaoi.pas' {Form1}; // <---------------- fehlt

{$R *.RES}

...


Allerdings fehlt dennoch eine Datei. Die mmaoi.pas. Es ist die Unit des Form1 Formulars. Da mußt du dich selbst drum kümmern.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
bms
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 735

Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
BeitragVerfasst: So 07.11.04 00:42 
Allerdings sind die Fehlenden Teile anscheinend nicht wichtig. Man kann sie löschen oder auskommentieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
program CapMci;

uses
  Forms,
  WVideo in 'WVideo.pas' {Video},
  VideoCap in 'VideoCap.pas',
  VideoMci in 'VideoMci.pas';
  //, mmaoi in 'mmaoi.pas' {Form1};

{$R *.RES}

begin
  Application.Initialize;
  Application.CreateForm(TVideo, Video);
  //Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


Danach funktioniert das Programm.

_________________
VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >:(
no-one Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 07.11.04 01:01 
Hallo bms.

Hatte es auch nicht als Ablaufplan gesehen. Nachdem Möglichkeit 1 nicht in Betracht kam, machte ich bei 2 weiter.
Danach kam ich dann zwangsläufig auch zu 3. :)

Das die Pfade nicht stimmten, merkte ich vorhin auch. Soweit war ich nach meinem letzten Beitrag dann doch noch gekommen.
Als ich dann feststellte, dass doch noch eine weitere Datei fehlt, hatte ich es dann aber aufgegeben.

Du hast Recht, denn der Code übersteigt mein Delphi-Wissen und ich dachte, es macht wenig Sinn, da weiterzumachen wenn onehin was fehlt.
Jetzt habe ich zwei funktionierende Codes (wobei der von Phantom1 deutlich einfacher zu verstehen ist) und bin sehr zufrieden. Vielen Dank für eure unermüdliche Hilfe.

Der Grundgedanke ist auch ein anderer gewesen:

Bei uns in der Firma kam es in letzter Zeit zu nicht unerheblichen Diebstählen und eine Überwachung bestimmter Bereiche, für die ich verantwortlich bin, erscheint mir sinnvoll. Webcams haben wir, sowie das restliche Equiment in Form von PC´s. Mir fehlt nur die passende Software. Kaufen ist eine Möglichkeit, doch selbstgecodet ist natürlich schöner und günstiger.

Doch ich sehe schon, dass das nicht so einfach zu realisieren ist.

Danke und Gruss

Chris