Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webcam Bild (JPG) per FTP-Uploaden (https://www.delphipraxis.net/97435-webcam-bild-jpg-per-ftp-uploaden.html)

internetnavigator 11. Aug 2007 16:30

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Danke!
Jetzt geht alles soweit gut, bis dann der Moment kommt: "Für diesen Befehl ist nicht genügend Speicher verfügbar!" Was ist das jetzt? Clipboard voll?

inherited 11. Aug 2007 20:54

Re: Webcam Bild (JPG) per FTP-Uploaden
 
zeig mal deinen ganzen code soweit bitte.

internetnavigator 11. Aug 2007 23:38

Re: Webcam Bild (JPG) per FTP-Uploaden
 
nun gut hier mein code:

Delphi-Quellcode:
//(...)
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, jpeg, clipbrd, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdFTP, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Timer1: TTimer;
    Image1: TImage;
    IdFTP1: TIdFTP;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private

    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Camhandle:Thandle;

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.Button1Click(Sender: TObject); //exit Button
begin
(* idFTP1.Disconnect;
idFTP1.Quit; Deaktiviert, da ich es momentan nicht brauche *)
Application.Terminate;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Camhandle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640, 480, Panel1.Handle, 1);                            //wird einmalig aufgerufen
  SendMessage(Camhandle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(Camhandle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  Timer1.Enabled := TRUE; // Timer einschalten, für Bilder "machen"
end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

j: tjpegimage;
//Size: DWORD; wird Momentan nich gebraucht
//Result : String; wird Momentan nich gebraucht


begin

  sendMessage(camhandle, WM_CAP_SET_OVERLAY, 1, 0); //|
  SendMessage(camhandle, wm_cap_set_preview, 1, 0); //|-> Init and make clipboard = bild
  SendMessage(camhandle, WM_CAP_EDIT_COPY, 1, 0 );  //\
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);//|

 

j := tjpegimage.create;
j.assign(Image1.Picture.Bitmap);              //save
j.SaveToFile('cap.jpg');

(*
...
Hier steht alles zum FTP-Upload, ist aber momentan noch deaktiviert
...
*)
end;
end.
Ich hoffe Ihr/Du findet/findest den Fehler :bounce1:

inherited 11. Aug 2007 23:59

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Was macht das SendMessage Set Overlay/Set preview im Timer?

internetnavigator 12. Aug 2007 00:46

Re: Webcam Bild (JPG) per FTP-Uploaden
 
hmm ich weiss auchnicht wie sich das dorthin kopieren konnte :angel: ...naja ich wusste es nicht besser :angel2:
...habe es jetzt verschoben, aber Fehler kommt immernoch :(

Zitat:

First chance exception at $7C812A5B. Exception class EOutOfResources with message 'Für diesen Befehl ist nicht genügend Speicher verfügbar.
'. Process cap_p.exe (1992)
Kann es auch an dem Clipboard liegen? Oder überschreibt sich das selbst, so dass man es nicht clearn muss?

gn8 soweit i-n

internetnavigator 13. Aug 2007 16:12

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Was kann das sein, wovon zu wenig da ist? - Bitte ich möchte dieses Programm wendlich fertig bekommen :)

Selbst Kleinigkeiten helfen! Wie zum Bleistift handle => Camhandle
Bitte!

mfg i-n

inherited 14. Aug 2007 11:28

Re: Webcam Bild (JPG) per FTP-Uploaden
 
zeig jetzt npochmal deine timerfunktion und sag uns, in welcher zeile der Fehler auftritt

internetnavigator 14. Aug 2007 13:40

Re: Webcam Bild (JPG) per FTP-Uploaden
 
Hallo :-D ,
also der Fehler gibt nicht an in welcher Zeile er passiert (bzw siehe unten im Code).

Hier nochmal der Code des Timers :arrow:
Delphi-Quellcode:

procedure TForm1.Timer1Timer(Sender: TObject);

var

j: tjpegimage;
Size: DWORD;
Result : String;


begin
   
   
  SendMessage(camhandle, WM_CAP_EDIT_COPY, 1, 0 );  // make clipboard = bild
  Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0); //img1 = Bild


  Size := MAX_COMPUTERNAME_LENGTH + 1;
  SetLength(Result, Size);                          //PC name holen
  if GetComputerName(PChar(Result), Size) then
    SetLength(Result, Size)
  else
    Result := '';


j := tjpegimage.create;
j.assign(Image1.Picture.Bitmap);              //save  (Result = Pc name)
j.SaveToFile('cap_' + Result + '_.jpg');



 (*
idFTP1            :=   TidFtp.Create;

idFTP1.Host      :=   '****';
idFTP1.Username  :=   '****';
idFTP1.Password  :=   '****';


idFTP1.Connect;
idFTP1.ChangeDir('/test/');
idFTP1.Put('cap_' + Result + '_.jpg');   //upload (Result = Pc name)
idFTP1.Disconnect;

//idFTP1.Quit;    *)

end; // wenn ich auf "break" in Delphi klicke, wenn der Fehler kommt, wird diese Zeile makiert. (Violett)
Ich habe noch die "var" Result (=Pc name) reingepackt, da wenn ich es von meinem Pc ausführe, nicht immer die Bilder überschrieben werden; oder ein Konflickt mit dem Pc im Keller auftritt.

So dann erstmal DANKE an alle die mich schon soweit gebracht haben! @inherited: ich hoffe du siehst das Problem :)

Gruß i-n

internetnavigator 14. Aug 2007 14:51

Re: Webcam Bild (JPG) per FTP-Uploaden
 
hab den Fehler gefunden:

Delphi-Quellcode:
j.Free;
:wall: :wall: war eigentlich klar!!!

...Aber ich habe bestimmt noch Probleme :D

Bis dann i-n

inherited 14. Aug 2007 14:53

Re: Webcam Bild (JPG) per FTP-Uploaden
 
kommt der fehler bereits beim ersten durchlauf? wenn ja, setz einen breakpoint auf die erste zeile des codes und geh mit F7 Ziele für Zeile weiter durch, dann siehst du genau in welcher Zeile das problem auftritt.

Roter Kasten: Na dann, viel glück weiterhin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz