![]() |
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? |
Re: Webcam Bild (JPG) per FTP-Uploaden
zeig mal deinen ganzen code soweit bitte.
|
Re: Webcam Bild (JPG) per FTP-Uploaden
nun gut hier mein code:
Delphi-Quellcode:
Ich hoffe Ihr/Du findet/findest den Fehler :bounce1:
//(...)
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. |
Re: Webcam Bild (JPG) per FTP-Uploaden
Was macht das SendMessage Set Overlay/Set preview im Timer?
|
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:
gn8 soweit i-n |
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 |
Re: Webcam Bild (JPG) per FTP-Uploaden
zeig jetzt npochmal deine timerfunktion und sag uns, in welcher zeile der Fehler auftritt
|
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:
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.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) So dann erstmal DANKE an alle die mich schon soweit gebracht haben! @inherited: ich hoffe du siehst das Problem :) Gruß i-n |
Re: Webcam Bild (JPG) per FTP-Uploaden
hab den Fehler gefunden:
Delphi-Quellcode:
:wall: :wall: war eigentlich klar!!!
j.Free;
...Aber ich habe bestimmt noch Probleme :D Bis dann i-n |
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. |
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