begin process at 2010 02 10 11:51:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > ENCODAGE VIDÉO EN TEMPS RÉEL: TAVIWRITER

ENCODAGE VIDÉO EN TEMPS RÉEL: TAVIWRITER


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimedia Classé sous :avi, compression, composant, multimédia Niveau :Débutant Date de création :03/05/2006 Date de mise à jour :03/05/2006 21:29:17 Vu / téléchargé :11 189 / 1 457

Auteur : Forman

Ecrire un message privé
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Le package fourni enregistre un nouveau composant dans la page "custom": TAVIWriter.

Ce composant permet d'écrire des fichiers AVI en utilisant les codecs installés sur la machine. Il est conçu pour fonctionner en mode non-bloquant, c'est à dire qu'il est possible de compresser et d'écrire des frames dans le fichier au fur et à mesure qu'elles sont générées, comme illustré dans le programme d'exemple fourni.

L'intérêt est qu'ainsi, il n'est pas nécessaire de créer un buffer pour les frames non compressées, et donc le programme utilise moins de resources, tant au niveau mémoire que processeur.

J'ai dû me plonger dans des articles assez obscurs (voire mensongers, eh oui, ce n'est d'ailleurs pas la première fois!) de la doc Microsoft pour l'écrire, et trouver comment utiliser les fonctions de VFW.pas (fourni dans le zip). Résultat: ça fonctionne assez bien, du moins chez moi. Du fait de l'utilisation de fonctions très bas niveau des codecs, il serait assez facile de modifier un peu le composant pour envoyer et recevoir de la vidéo compressée sur TCP/IP.

Pour l'instant je n'ai pas encore réussi à tout décrypter la partie de la MSDN qui traite de la compression du son (sérieusement, est-ce que Microsoft paie des gens pour mettre volontairement des erreurs et des imprécisions dans sa documentation, ou au contraire est-ce qu'il ne paie pas ceux qui l'écrivent?).
Donc pas (encore) de possibilité d'inclure une piste sonore dans le fichier AVI généré, mais ça viendra peut-être dans une future version.

Il y a 4 méthodes pour ajoutter une frame à l'AVI:
-Depuis un TBitmap (relativement rapide)
-Depuis un TGraphic (JPEG ou autre, à peine moins rapide)
-Depuis n'importe quel DC, par exemple on peut faire, comme dans l'exemple, une vidéo de son bureau (moyennement rapide)
-Depuis un buffer RGB avec les lignes alignées sur 32 bits (le plus rapide)

Pour créer un AVI, il faut successivement:
-Définir les paramètres du fichier (AVIFileName, AVIWidth, AVIHeight, AVIFrameRate etc...)
-Commencer à enregistrer avec StartRecording
-Ajoutter des frames en utilisant l'une des 4 méthodes décrites ci-dessus
-Finaliser le fichier et stopper l'enregistrement avec StopRecording.

Il faut ABSOLUMENT que StopRecording soit appelé après StartRecording, sinon le fichier risque d'être corrompu ou illisible.

Poour l'instant, je n'ai testé que 3 codecs:
-Non compressé.
-VP62 de Microsoft (fonctionne bien).
-Indeo Video (fonctionne bien en mode normal, mais illisible en mode "real time").

Si quelqu'un a l'occasion d'essayer d'autres codecs, merci de me dire si ça fonctionne ou non.

Tous commentaires pertinents sont les bienvenus.

Source

  • TAVIWriter=class(TComponent)
  • private
  • public
  • constructor Create(AOwner:TComponent);override;
  • procedure StartRecording; //Start AVI recording (no processing parameters can change from now on)
  • procedure StopRecording; //Stop AVI recording and finalize file. MUST be called after each call to StartRecording,
  • //or the generated file will be corrupted. (use try..finally statement)
  • procedure AddFrameBitmap(ABitmap:TBitmap); //Add a bitmap image to AVI stream
  • procedure AddFrameGraphic(AGraphic:TGraphic); //Add graphic object (ie: TJPEGImage) to stream
  • procedure AddFrameFromDC(SrcDC:HDC;SrcRect:TRect); //Add frame from Windows device context (ie: GetDC(GetDesktopWindow)).
  • //SrcRect is the source image rectangle.
  • procedure AddFrameRawRGB(RGBPtr:Pointer;Width,Height:Integer); //Add RGB data pointer. Data must be 32 bits-aligned.
  • property BytesWritten:LongInt read FBytesWritten; //Number of bytes written so far
  • property SamplesWritten:LongInt read FSamplesWritten; //Number of "samples" written so far (used by AVIStreamWrite, seems buggy, so do not use...)
  • property CurrentFrame:Integer read FCurrentFrame; //Current frame index
  • destructor Destroy;override;
  • published
  • //The following properties MUST be set BEFORE StartRecording:
  • property AVIPixelFormat:TAVIPixelFormat read FAVIPixelFormat write SetAVIPixelFormat default apfRGB24; //AVI pixel format, default RGB24.
  • property AVIFileName:string read FAVIFileName write SetAVIFileName; //AVI file name.
  • property AVIWidth:Integer read FAVIWidth write SetAVIWidth; //AVI pixel width.
  • property AVIHeight:Integer read FAVIHeight write SetAVIHeight; //AVI pixel height.
  • property AVIRealTime:Boolean read FAVIRealTime write SetAVIRealTime; //Fast compress mode.
  • property AVIFrameRate:Cardinal read FAVIFrameRate write SetAVIFrameRate; //Frame rate (number of frames in 1000 seconds)
  • //The following properties can be set whil recording:
  • property AVIBackGroundColor:TColor read FAVIBackGroundColor write SetAVIBackGroundColor default clNone; //Background color for stretching.
  • property AVIQuality:Cardinal read FAVIQuality write SetAVIQuality; //Quality. Not all codecs can support setting quality values.
  • property AVIDataRate:Cardinal read FAVIDataRate write SetAVIDataRate; //Dat arate. Not all codecs can support setting data rate values.
  • property AVIAutoKeyFrames:Boolean read FAVIAutoKeyFrames write SetAVIAutoKeyFrames; //Auto-generate keyframes. Some codecs make that themselves.
  • property AVIMaxFramesBetweenKeys:Cardinal read FAVIMaxFramesBetweenKeys write SetAVIMaxFramesBetweenKeys; //Maximum number of frames between 2 keyframes. Used only if AutoKeyFrame=True.
  • property ResamplingMethod:TResamplingMethod read FResamplingMethod write SetResamplingMethod; //Sampling method when added source image has not the same size than the AVI.
  • property CompressorSelection:TCompressorSelectionMethod read FCompressorSelection write SetCompressorSelection; //Compression selection method:
  • // * csmNoCompression: no compression
  • // * csmAutoSelect: let windows select appropriate codec (not recommended! lol)
  • // * csmSimpleDialog: simple dialog selection
  • // * csmExtendedDialog: extended dialog
  • // * csmCustom: use OnCustomSelectCompressor event, which must be set or an EUserAbortException will be raised
  • property OnStartRecording:TNotifyEvent read FOnStartRecording write SetOnStartRecording; //Recording has successfully started
  • property OnStopRecording:TNotifyEvent read FOnStopRecording write SetOnStopRecording; //Recording is being stopped
  • property OnFrameAdd:TNotifyEvent read FOnFrameAdd write SetOnFrameAdd; //a frame is being added
  • property OnCustomSelectCompressor:TCustomCompressorSelectionEvent read FOnCustomSelectCompressor write SetOnCustomSelectCompressor; //see CompressorSelection and TCustomCompressorSelectionEvent
  • end;
  TAVIWriter=class(TComponent)
  private
  public
    constructor Create(AOwner:TComponent);override;

    procedure StartRecording;                                       //Start AVI recording (no processing parameters can change from now on)
    procedure StopRecording;                                        //Stop AVI recording and finalize file. MUST be called after each call to StartRecording,
                                                                    //or the generated file will be corrupted. (use try..finally statement)

    procedure AddFrameBitmap(ABitmap:TBitmap);                      //Add a bitmap image to AVI stream
    procedure AddFrameGraphic(AGraphic:TGraphic);                   //Add graphic object (ie: TJPEGImage) to stream
    procedure AddFrameFromDC(SrcDC:HDC;SrcRect:TRect);              //Add frame from Windows device context (ie: GetDC(GetDesktopWindow)).
                                                                    //SrcRect is the source image rectangle.

    procedure AddFrameRawRGB(RGBPtr:Pointer;Width,Height:Integer);  //Add RGB data pointer. Data must be 32 bits-aligned.

    property BytesWritten:LongInt read FBytesWritten;               //Number of bytes written so far
    property SamplesWritten:LongInt read FSamplesWritten;           //Number of "samples" written so far (used by AVIStreamWrite, seems buggy, so do not use...)
    property CurrentFrame:Integer read FCurrentFrame;               //Current frame index

    destructor Destroy;override;
  published
    //The following properties MUST be set BEFORE StartRecording:
    property AVIPixelFormat:TAVIPixelFormat read FAVIPixelFormat write SetAVIPixelFormat default apfRGB24;           //AVI pixel format, default RGB24.
    property AVIFileName:string read FAVIFileName write SetAVIFileName;                                              //AVI file name.
    property AVIWidth:Integer read FAVIWidth write SetAVIWidth;                                                      //AVI pixel width.
    property AVIHeight:Integer read FAVIHeight write SetAVIHeight;                                                   //AVI pixel height.
    property AVIRealTime:Boolean read FAVIRealTime write SetAVIRealTime;                                             //Fast compress mode.
    property AVIFrameRate:Cardinal read FAVIFrameRate write SetAVIFrameRate;                                         //Frame rate (number of frames in 1000 seconds)

    //The following properties can be set whil recording:
    property AVIBackGroundColor:TColor read FAVIBackGroundColor write SetAVIBackGroundColor default clNone;          //Background color for stretching.
    property AVIQuality:Cardinal read FAVIQuality write SetAVIQuality;                                               //Quality. Not all codecs can support setting quality values.
    property AVIDataRate:Cardinal read FAVIDataRate write SetAVIDataRate;                                            //Dat arate. Not all codecs can support setting data rate values.
    property AVIAutoKeyFrames:Boolean read FAVIAutoKeyFrames write SetAVIAutoKeyFrames;                              //Auto-generate keyframes. Some codecs make that themselves.
    property AVIMaxFramesBetweenKeys:Cardinal read FAVIMaxFramesBetweenKeys write SetAVIMaxFramesBetweenKeys;        //Maximum number of frames between 2 keyframes. Used only if AutoKeyFrame=True.

    property ResamplingMethod:TResamplingMethod read FResamplingMethod write SetResamplingMethod;                    //Sampling method when added source image has not the same size than the AVI.
    property CompressorSelection:TCompressorSelectionMethod read FCompressorSelection write SetCompressorSelection;  //Compression selection method:
                                                                                                                     // * csmNoCompression:  no compression
                                                                                                                     // * csmAutoSelect:     let windows select appropriate codec (not recommended! lol)
                                                                                                                     // * csmSimpleDialog:   simple dialog selection
                                                                                                                     // * csmExtendedDialog: extended dialog
                                                                                                                     // * csmCustom:         use OnCustomSelectCompressor event, which must be set or an EUserAbortException will be raised

    property OnStartRecording:TNotifyEvent read FOnStartRecording write SetOnStartRecording;  //Recording has successfully started
    property OnStopRecording:TNotifyEvent read FOnStopRecording write SetOnStopRecording;     //Recording is being stopped
    property OnFrameAdd:TNotifyEvent read FOnFrameAdd write SetOnFrameAdd;                    //a frame is being added

    property OnCustomSelectCompressor:TCustomCompressorSelectionEvent read FOnCustomSelectCompressor write SetOnCustomSelectCompressor;  //see CompressorSelection and TCustomCompressorSelectionEvent
  end;


 Conclusion

Pour faire fonctionner la démo:
-Installer le package AVIWriter_D7.dpk (dans le répertoire Lib/)
-Compiler et lancer le programme Project1.dpr (dans le répertoire Example/)

La démo illustre les propriétés du composants, ainsi que les diverses méthodes d'ajout de frames.
-Bitmap list: génère une animation avec des bitmaps
-Desktop camera: filme l'écran de l'ordinateur pendant quelques secondes
-Mouse camera: filme un rectangle de l'écran qui suit le pointeur de la souris
-OpenGl: génération d'un film à partir d'OpenGl

Certains lecteurs vidéos n'arrivent pas à lire les fichiers générés avec certains codecs, alors que d'autres si... Bienvenue dans le monde magique et non-déterministe de Video For Windows, l'enfer des programmeurs      ;-)

Le source est dans la catégorie Débutant, car utiliser le composant est facile, le composant devrait être dans "Expert".

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 mai 2006 21:29:17 :
J'ai oublié de préciser: -le FrameRate correspond aux nombre de frames en 1000 secondes. -le DataRate est le nombre d'octets par seconde du fichier -Quality varie de 0 à 10000 (0=mauvaise, 10000=bonne)

 Sources du même auteur

Source avec Zip TRADUCTION DE DOKAN EN DELPHI: UN DRIVER "USER-MODE" POUR DI...
Source avec Zip Source avec une capture TASK MANAGER EN MODE TEXTE (ÉMULATION MODE 03H)
Source avec Zip Source avec une capture CHRONOMÈTRE POUR LE THÉ
Source avec Zip UTILITAIRE POUR LANCER UN PROGRAMME DEPUIS UN AUTRE COMPTE (...
Source avec Zip Source avec une capture DÉMONSTRATION DE LA GESTION DES OBJETS EN MÉMOIRE PAR DELPHI...

 Sources de la même categorie

Source avec Zip Source avec une capture SCREENCAMTURE 0.2 par JulioDelphi
Source avec Zip Source avec une capture CHANGEUR DE FOND D'ÉCRAN par John Dogget
Source avec Zip Source avec une capture SCAN THREAD : BASS par Nicolas___
Source avec Zip Source avec une capture PEDALE MULTI EFFETS [BASS ASIO] par Nicolas___
Source avec Zip Source avec une capture POPUP ALERTE STYLE MSN AVAST par strobinateur

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TQGRID UN STRINGGRID AMÉLIORER. par yanb
Source avec Zip Source avec une capture GESTION DES "CRASHS D'APPLICATION" par Bacterius
Source avec Zip Source avec une capture UN JOLI BOUTON ! par Bacterius
Source avec Zip Source avec une capture DATETIMEPICKER : AJOUT DE FONCTIONS par simonpelloquin
Source avec Zip Source avec une capture CONCATÉNATION ( ENTRE AUTRES)DE FICHIERS MPEG(1/2) OU AVI VE... par delphiriri

Commentaires et avis

Commentaire de Nicolas___ le 03/05/2006 21:08:26

Salut ,
ton code a l'air super mais ton composant Aviwriter( c'est le tien n'est ce pas ???) utilise un nom deja connu ( ce qui pose pas mal de merde pour l'installer).
Une fois le Taviwriter(un compo que j'avais sur mon pc) viré, je me dis :
" chouette je vais pouvoir installer le tiens " ... mais non !!!
Prq ?

ben Glscene : un compo aussi de ce nom existe et donc ca ne veut pas installer mon paquet...

( et j'ai pas envie de virer Glscene,Connais tu un autre moyen ???)

dommage ta source a l'air chouette ...

Ciao

Commentaire de Forman le 03/05/2006 21:25:03

Salut,

Effectivement, le composant est de moi     ;-)

Pour l'installer sans virer GlScene, tu peux aller dans le menu Component->Install package et décocher la case de GlScene dans la liste, ça va juste le désactiver sans le désinstaller. Il te suffira de le recocher (après avoir décoché ou désinstallé le mien) pour l'utiliser de nouveau.

Commentaire de Nicolas___ le 04/05/2006 20:23:38

Salut, merci je teste !

Commentaire de Filipe35 le 13/05/2006 00:06:18

Je garde en favorie en attendant une version audio+video ;)

Commentaire de Forman le 14/05/2006 13:02:14

Hehe...

Ceci dit, je me demandais sous quelle forme importer les données audio. Il y a plusieurs possibilités:
-ajoutter un son wave. Inconvénient: il faut que les 2 flux (audio+vidéo) aient la même durée.
-faire un système de streaming pour le son aussi, qui ajoutte les données depuis la carte son. Inconvénient: difficile de contrôler exactement quand l'enregistrement du son commence et quand il finit.

Commentaire de porcher_laurent le 21/02/2007 15:18:15

Salut je suis laurent un nouveau sur delphi
j'ai telechargé Aviwriter et à partir de la demo,
j'ai realisé un petit programme sympa!
Enfin j'ai ajouté ,le son (dans un flux séparé)
                   ,une horloge pour syncroniser les flux
                   ,une saisie visuel de la zone à capturer
                   ,une fenetre de visualisation de la capturer
                   ,l'audio est capturer à partir de la carte son,(canal à régler et volume)
                  ,Je multiplex les flux avec "Avidemux"
                  ,Le son peut étre capturé en wav 11,22,44 kh et Mp3<- à bas framerate grosse configuration exigé !
                  ,sur ma machine "atlon64 3400+ radeon X800 xl" j'encode en xvid en 720 576 à 25 i/s et audio 22 kh 16 bit st
        Si cela interesse quelqu'un je peut envoyer mon code,je cherche à multiplexer mes fux.
Pour info le logiciel Media player classic Syncronise automatiquement l'audio et la vidéo
A plus      Laurent.p

Commentaire de pea le 11/06/2007 11:15:16

Hello. I apologise for writing in english. I am from New Zealand and am afraid I don't know any French.

I am using this component in my program, and it is great! There is one problem I have encountered:

When using any Microsoft MP4 codec, or XVid, changing the AVIDataRate and the AVIQuality have no affect at all.  If I use the cmsExtendedDialog and change the settings, it also does not have any effect, and the video is of poor quality.

Do you know why this might be?

Commentaire de Forman le 11/06/2007 13:19:19

Hi.

There can be several reasons why a given codec cant support DataRate or Quality settings:

-some codecs cannot intrinsequely support them. When you have a valid HIC to a system codec (that is, some kind of Windows handle) you can call the API ICGetInfo which returns the TICInfo for that codec. The Flag member of this sctructure indicate the capabilities of the codec: VIDCF_CRUNCH for the ability to set the data rate, and VIDCF_QUALITY for the ability to set quality factor. Also, using the codec in Real Time mode (fast compress) can prevent these settings to work properly.

-some codecs may need "multiple passes" (that's the case of XVID for instance) to be 100% efficient. You can use this feature through the configuration dialog box of the codec (no general support is provided for it anyway, it depends on the implementation of the codec itself). Using multiple passes can drasticaly improve the quality of the generated AVI file, and its size/datarate.

Hope this helps...

Commentaire de pea le 11/06/2007 23:30:43

Thanks for your help, forman. I will have a look at the ICGetInfo function.

Just a note: even changing the settings in the configuration dialog of the codec (Microsoft MP4 v1,2 and 3, and XVid) does not change the quality and datarate, and the file size of the final avi is exactly the same no matter what I do.

Commentaire de Forman le 12/06/2007 00:16:13

Hmm...

I've read my code again (I wrote it quite a while ago) and it looks like I already took care of the ICGetInfo properties. That means, codecs which do not explicity support the data rate/quality settings wont have the 2 corresponding trackbars shown on the right of the window (when using cmsExtendedDialog).

Now that would mean they simply do not support the feature as they are supposed to... Maybe that could have something to do with the keyframes (try enabling auto keyframe in the dialog box). I tried with a popular codec named "Indeo Video" and it works (setting the quality to 10% will give a file 10 times smaller than 100%). Have you tried turning on the "double pass" feature (using XVid for instance)? Maybe that could help, too.

All I can say for sure is that I spent lot of time making my code 100% compliant with the specifications written in the MSDN (which is not easy since there are a lot of obvious mistakes in it). But, that doesnt mean codecs are also compliant... In fact, most codecs have specific proprietary features which cant be accessed through the standard VFW API's alone (you need to directly interface your code with the DLL implementing the codec to access these features).

Popular programs (like VirtualDub, etc...), when using these codecs are aware of these properties and try using it in this non-standard manner. Moreover, some codecs are designed to work with DirectDraw, and do not focus on being totally compatible with VFW anymore (even if they still support it "a little").

Maybe that could explain why you are experiencing this problem.

Commentaire de pea le 12/06/2007 00:22:52

Hi Forman.  Thank you for going to the effort of doing that.

I'll do some general searching on the MP4 codecs, as I am sure the problem is with them and not your code, because Indeo Video works ok for me too.  I'll add a note here when I find the solution.

Thank you!

Commentaire de Forman le 12/06/2007 18:02:00

Hi
No problem, that's what this site is about.

I'm looking forward to see if you find something, I'm also curious about these codecs.

Commentaire de philgeorges le 21/08/2007 12:50:04

Il serait judicieux d'ajouter la possibilité de transmettre un flux par TCP/IP.

On peut en effet penser à un logiciel de video conférence !

Philippe

Commentaire de Forman le 21/08/2007 17:02:01

Oui mais pour ça il faudrait d'abord écrire un composant TAVIReader qui permettrait de lire à la volée (c'est à dire sans passer par un fichier). Il faudrait aussi un peu modifier TAVIWriter pour qu'il n'écrive pas dans un fichier mais dans un flux TCP/IP (ça ne devrait pas être le plus dur, ceci dit).

L'idée est très intéressante, je vais y réfléchir (mais pas avant le mois prochain, je suis beaucoup trop occupé en ce moment). A priori, je pense qu'il faudrait faire une classe de base (par exemple TCustomAviWriter/TCustomAVIReader) avec des méthodes virtuelles pour l'écriture/lecture dans/depuis un flux, et on pourrait en faire descendre les classes TFileAviWriter (l'équivalent de mon composant actuel)/TFileAviReader, ainsi que TTCPAviWriter/TTCPAviReader.

Avec cette approche, on pourrait aussi donner la possibilité d'inclure du son, mais c'est vrai que ça pose tout de suite des problèmes de synchronisation. Ceci dit, pour un système de vidéoconférence, il pourrait être plus judicieux de l'envoyer séparément, voire même de façon "prioritaire" par rapport à la vidéo en cas de bande passante limitée (c'est plus grave que le son soit saccadé par rapport à l'image).

Commentaire de philgeorges le 06/09/2007 11:31:10

Oui, on peut envoyer le son séparément, voire même n'envoyer que le son si la bande passante est limitée. Je pense qu'avec les composants Indy, ce serait plus simple pour streamer. Il faut créer des "paquets" pour les envoyer et les recevoir sur TCP.

Sur ce lien :
http://leenover.homeip.net/isapi/pas2html.dll/pas2html?File=/delphi/Projects/VideoCoDecDemo/

Il y a deja du travail de fait, mais les routines ne sont pas fiables pour l'instant, mais cela peut déja donner une idée. Sur ce code source les classes de base manquantes pour le streaming peuvent je pense être reprises. J'ai fait des essais, mais sans vraiment y arriver.

Commentaire de Forman le 06/09/2007 11:59:50

Merci pour le lien, j'ai regardé rapidement le code et il a l'air très bien écrit et très propre. Ceci dit, je pense vraiment que le plus dur n'est pas d'envoyer/recevoir les données, mais de décompresser le flux qui arrive (j'avais déjà un peu regardé sur MSDN, apparemment ça a l'air plus dur que pour compresser).

Commentaire de philgeorges le 05/12/2007 15:24:47

Bonjour,

Avez vous avancé sur ce projet de transmission vidéo TCP/IP ? J'ai essayé pas mal de choses de mon côté, mais je n'ai pas vos compétences en Video. Si vous avez avancé dans ce sens, ce serait gentil de donner quelques infos, et peut être même quelques code sources....

Bon courage !

Commentaire de Forman le 05/12/2007 21:26:40

Bonjour,

désolé mais en ce moment je suis vraiment très pris par mon occupation professionnelle, je n'ai plus le temps de programmer autant qu'avant. Mais ça devrait se calmer un peu d'ici un ou deux mois... du moins je l'espère! Donc je n'ai pas trop pu avancer là-dessus pour l'instant.

Ceci dit le sujet m'intéresse toujours, quand j'aurai le temps je m'y mettrai sérieusement, et je donnerai des nouvelles ici.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pb : Le composant internet de delphi [ par infohelp ] Bonjour je cherche le composant similaire d'acces a internet de visual basic (winsock) mais le meme avec les meme fonctions et qui prenent les proxy c Utiliser TIdMappedPortTCP """Composant Indyserver""" [ par PsyckoHia ] SaLuT je cherche a utiliser TIdMappedPortTCP qui se trouve dans Indy seveur , Est ce que qq'un peux me donner un exemple simple,à part celui qui est Composant clientsocket [ par MeuhMeuh ] Bonjour,Je voudrais savoir s'il est possible de positionner des FLAGS (RST,FIN,OOB...) quand on envoie des données avec le composant Client Socket, si Programme console et composant database [ par VTCFMAN ] Peut-on utiliser les composants Database dans un programme console avec ou sans module de données ?. Si non existe-t-il des des librairies permettant URGENT : problème d'installation de composant [ par Henri ] problème d'installationBonjour,Je vous remercie de résoudre le problème suivant :Je voudrais installer un composant téléchargé sans son fichier *.pas composant webbrowser [ par vib ] Bonjour, Je débute en Delphi.Je désire récupéré le contenu d'une page Html à partir du composant Webbrowser.J'ai utilisé ce composant avec VB, proprié TNMPOP3 composant [ par Steph ] j'ai essayé d'utiliser le composant TNMPOP3 (FastNet) pour afficher le nombre de messages reçus (non lus ?) dans ma boite aux lettres Outlook.Pour cel Création dynamique de composant [ par Amadeus ] Comment créer dynamique des contrôle TImage ?Je voudrais créer sur une Form autant de TImage que d'image se trouvant dans un répertoire donné. Comment composant de l'explorateur [ par vib ] Bonjour,Quelqu'un pourrit il me dire ou trouver le composant qui liste les fichiers dans l'explorateur et qui permet d'un simple clic sur l'entête de propriété d'un composant à partir de 'components' [ par vib ] Je désire modifier les propriétés de n'importe quel composant sur une feuille.Je me suis servi de la propriété 'components'de la feuille avec l'index


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales