Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

17 commentaire(s) de sylvunix sur des sources sur tout CodeS-SourceS

Le : 04/03/2009 07:50:12
Source : CHARGER ET ENVOYER DES DONNÉES VIA L'USB
Bonjour Bactérius,

La DLL mchid permet d'utiliser les interfaces USB du PC ... Elle contient les fonctions suivantes :

function Connect(pHostWin:HWND):BOOL;
function Disconnect:BOOL;
function GetItem(pIndex:UINT):UINT;
function GetItemCount:UINT;
function Read(pHandle:UINT;pData:pointer):BOOL;
function Write(pHandle:UINT;pData:pointer):BOOL;
function ReadEx(pVendorID,pProductID:UINT;pData:pointer):BOOL;
function WriteEx(pVendorID,pProductID:UINT;pData:pointer):BOOL;
function GetHandle(pVendorID,pProductID:UINT):UINT;
function GetVendorID(pHandle:UINT):UINT;
function GetProductID(pHandle:UINT):UINT;
function GetVersion(pHandle:UINT):UINT;
function GetVendorName(pHandle:UINT;pText:LPSTR;pLen:UINT):UINT;
function GetProductName(pHandle:UINT;pText:LPSTR;pLen:UINT):UINT;
function GetSerialNumber(pHandle:UINT;pText:LPSTR;pLen:UINT):UINT;
function GetInputReportLength(pHandle:UINT):UINT;
function GetOutputReportLength(pHandle:UINT):UINT;
procedure SetReadNotify(pHandle:UINT;pValue:BOOL);
function IsReadNotifyEnabled(pHandle:UINT):BOOL;
function IsAvailable(pVendorID,pProductID:UINT):BOOL;

Mais ça laurent aurait pu nous le dire ... D'ailleurs si vous avez plus d'info la-dessus, je suis preneur ...

sylvunix


Le : 10/09/2007 16:32:20
Source : EXÉCUTION DE SCRIPTS TYPE THREAD, SANS TTHREAD...
Bonjour Mr David H.,

'En fait, il s'agit d'un package que je vais développer...'

Si le package n'est pas encore développé alors pourquoi le publier ? J'ai pas compris l'intérêt ... J'ai regardé attentivement les sources et cela sonne vide ...

Si j'ai bien suivi, tu te lances aussi dans la 3D ...

Que de projets à terminer ...

Bon courage ...


Le : 05/09/2007 11:30:04
Source : LVL++ SCRIPT EDITOR
Une simple recherche google te donnera toute la documentation et de nombreux exemples sur lex et yacc en langage C. Pour information, j'ai également utilisé il y a longtemps un shareware de Delphi qui fonctionnait très bien (http://www.bumblebeesoftware.com/index.htm).




Le : 05/09/2007 10:05:41
Source : LVL++ SCRIPT EDITOR
Bonjour craftsystem,

Tu vas me dire que j'en veux aux débutants et que je cherche à démotiver toute initiative. Mais comme le dit f0xi, que je salut au passage, créer son propre langage est un projet très ambitieux qui demande de nombreuses compétences.

J'ai pour ma part créé plusieurs langages dont un, il y a une dizaine d'années, qui a été intégré dans un logiciel commercial. Mon expérience me permet de t'affirmer que tu prends le problème par la fin. En résumé, tu t'attaques à l'emballage alors qu'il n'y a rien dans le paquet ...

Je m'explique.

Un langage se définit par une syntaxe et une grammaire. La syntaxe permet entre autre de dire comment on écrit une chaîne de caractères, le nom d'une variable ... La grammaire quant à elle détermine comment sont structurés les éléments d'un source (affectation, test, boucle, fonction, ...).

Cela doit être le point de départ de ton projet faute de quoi ton algorithme qui va traiter ton code source sera totalement bogué. Je te conseille de t'intéresser aux outils comme lex et yacc (ou flex et bison en open source) sur lesquels ont été créés de très nombreux langages interprétés ou non (principalement dans le monde Unix).

Ensuite vient la phase génération de code. Il faut à ce niveau avoir un très bon niveau en assembleur et une très grande maîtrise du système d'exploitation cible (format du binaire, appels systèmes ...).

Tu peux te limiter à la génération d'un code source dans un autre langage. L'intérêt me semble dans ce cas limité car tu auras en final un langage moins riche et complexe à utiliser car tu devras également compiler le source résultant ... (cf NSDK pour les connaisseurs).

Enfin la cerise sur le gâteau est l'éditeur de source ou EDI pour les versions plus évoluées. Optionnel, il offrira une interface agréable à l'utilisateur final.

Je pense que tu devrais revoir ta cible et te limiter à un langage interprété. Ce serait déjà un très bon début !



Le : 28/08/2007 19:49:15
Source : KEYGENME
Désolé craftsystem ... mais il faut que tu sois bien conscient que code source est un espace de partage au sein de la communauté de programmeurs.

Tu as posté ce projet que tu as réalisé toi-même et c'est tout en ton honneur. Mais il faut de demander si ce source peut apporter quelque chose à la communauté.

Personnellement, lorsque je poste un source qui me semble intéressant à partager, je le perfectionne au maximum afin qu'il puisse être réutilisable.

Ce n'est pas la course aux dépots, car ce n'est pas un dépotware !

Finalise ton projet et je pense que l'accueil sera nettement meilleur.

sylvunix


Le : 16/03/2007 07:18:03
Source : COMPOSANT WEBMEMO
Salut Shining,

Désolé de mettre laissé aller et d'avoir sorti la grosse artillerie ! Mais une bonne scéance de psychanalyse me permettra peut-être de te faire comprendre les raisons de cette dérive !

En fait, contrôler la longueur du texte n'était pas suffisant car il fallait pouvoir détecter les changements de texte du type 'delphi' par 'azerty'. Un simple balayage du type somme n'était pas non plus suffisant car il fallait également détecter les changements du type 'bonjour' par 'jourbon'. C'est pourquoi j'ai fini par sortir le crc32.

Il est vrai que cela consomme des ressources. Mais en introduisant une variable booléenne privée FDocChanged qui mémoriserait si le document a été déjà modifié, on pourrait éviter de dérouler l'argorithme inutilement.

function TCustomWebMemo.GetDocChanged: Boolean;
var
  Crc32: LongInt;
begin
  Result := FDocChanged;

  // Réalise un Crc32 sur le texte complet uniquement si le document n'a pas déjà été modifié
  if not(FDocChanged) then
  begin
    Crc32 := GetDocCrc32;
    Result := not(Crc32 = FDocCrc32);
    FDocCrc32 := Crc32;
  end;
end;

procedure TCustomWebMemo.ResetDocChanged;
begin
  FDocChanged := false;
  FDocCrc32 := GetDocCrc32;
end;

Il y a également dans mon subconcient un besoin refoulé que j'arrive maintenant à exprimer clairement. Mais je pense que cela relève plutôt du fantasme que de la réalité car je ne vois pas techniquement comment on pourra le coder. L'idée serait d'avoir un évènement OnDocChanged ...

@+


Le : 14/03/2007 17:38:13
Source : COMPOSANT WEBMEMO
Salut Shining,

Pour revenir à notre dernier sujet, j'ai testé les ajouts suivants. Pourrais-tu me donner ton avis d'expert.

sylvunix

P.S. : La propriété DocChanged est en écriture car dans mon application, j'ai besoin d'y accéder.

Dans la partie private de la définition de la classe TCustomWebMemo :

    FDocCrc32          : LongInt;
    function    GetDocChanged: Boolean;

Dans la partie protected de la définition de la classe TCustomWebMemo :

    property    DocChanged : Boolean           read GetDocChanged;


Dans l'implémentation :

const TableCrc32:array[0..255] of longint=(
        $00000000, $77073096, $ee0e612c, $990951ba, $076dc419, $706af48f,
        $e963a535, $9e6495a3, $0edb8832, $79dcb8a4, $e0d5e91e, $97d2d988,
        $09b64c2b, $7eb17cbd, $e7b82d07, $90bf1d91, $1db71064, $6ab020f2,
        $f3b97148, $84be41de, $1adad47d, $6ddde4eb, $f4d4b551, $83d385c7,
        $136c9856, $646ba8c0, $fd62f97a, $8a65c9ec, $14015c4f, $63066cd9,
        $fa0f3d63, $8d080df5, $3b6e20c8, $4c69105e, $d56041e4, $a2677172,
        $3c03e4d1, $4b04d447, $d20d85fd, $a50ab56b, $35b5a8fa, $42b2986c,
        $dbbbc9d6, $acbcf940, $32d86ce3, $45df5c75, $dcd60dcf, $abd13d59,
        $26d930ac, $51de003a, $c8d75180, $bfd06116, $21b4f4b5, $56b3c423,
        $cfba9599, $b8bda50f, $2802b89e, $5f058808, $c60cd9b2, $b10be924,
        $2f6f7c87, $58684c11, $c1611dab, $b6662d3d, $76dc4190, $01db7106,
        $98d220bc, $efd5102a, $71b18589, $06b6b51f, $9fbfe4a5, $e8b8d433,
        $7807c9a2, $0f00f934, $9609a88e, $e10e9818, $7f6a0dbb, $086d3d2d,
        $91646c97, $e6635c01, $6b6b51f4, $1c6c6162, $856530d8, $f262004e,
        $6c0695ed, $1b01a57b, $8208f4c1, $f50fc457, $65b0d9c6, $12b7e950,
        $8bbeb8ea, $fcb9887c, $62dd1ddf, $15da2d49, $8cd37cf3, $fbd44c65,
        $4db26158, $3ab551ce, $a3bc0074, $d4bb30e2, $4adfa541, $3dd895d7,
        $a4d1c46d, $d3d6f4fb, $4369e96a, $346ed9fc, $ad678846, $da60b8d0,
        $44042d73, $33031de5, $aa0a4c5f, $dd0d7cc9, $5005713c, $270241aa,
        $be0b1010, $c90c2086, $5768b525, $206f85b3, $b966d409, $ce61e49f,
        $5edef90e, $29d9c998, $b0d09822, $c7d7a8b4, $59b33d17, $2eb40d81,
        $b7bd5c3b, $c0ba6cad, $edb88320, $9abfb3b6, $03b6e20c, $74b1d29a,
        $ead54739, $9dd277af, $04db2615, $73dc1683, $e3630b12, $94643b84,
        $0d6d6a3e, $7a6a5aa8, $e40ecf0b, $9309ff9d, $0a00ae27, $7d079eb1,
        $f00f9344, $8708a3d2, $1e01f268, $6906c2fe, $f762575d, $806567cb,
        $196c3671, $6e6b06e7, $fed41b76, $89d32be0, $10da7a5a, $67dd4acc,
        $f9b9df6f, $8ebeeff9, $17b7be43, $60b08ed5, $d6d6a3e8, $a1d1937e,
        $38d8c2c4, $4fdff252, $d1bb67f1, $a6bc5767, $3fb506dd, $48b2364b,
        $d80d2bda, $af0a1b4c, $36034af6, $41047a60, $df60efc3, $a867df55,
        $316e8eef, $4669be79, $cb61b38c, $bc66831a, $256fd2a0, $5268e236,
        $cc0c7795, $bb0b4703, $220216b9, $5505262f, $c5ba3bbe, $b2bd0b28,
        $2bb45a92, $5cb36a04, $c2d7ffa7, $b5d0cf31, $2cd99e8b, $5bdeae1d,
        $9b64c2b0, $ec63f226, $756aa39c, $026d930a, $9c0906a9, $eb0e363f,
        $72076785, $05005713, $95bf4a82, $e2b87a14, $7bb12bae, $0cb61b38,
        $92d28e9b, $e5d5be0d, $7cdcefb7, $0bdbdf21, $86d3d2d4, $f1d4e242,
        $68ddb3f8, $1fda836e, $81be16cd, $f6b9265b, $6fb077e1, $18b74777,
        $88085ae6, $ff0f6a70, $66063bca, $11010b5c, $8f659eff, $f862ae69,
        $616bffd3, $166ccf45, $a00ae278, $d70dd2ee, $4e048354, $3903b3c2,
        $a7672661, $d06016f7, $4969474d, $3e6e77db, $aed16a4a, $d9d65adc,
        $40df0b66, $37d83bf0, $a9bcae53, $debb9ec5, $47b2cf7f, $30b5ffe9,
        $bdbdf21c, $cabac28a, $53b39330, $24b4a3a6, $bad03605, $cdd70693,
        $54de5729, $23d967bf, $b3667a2e, $c4614ab8, $5d681b02, $2a6f2b94,
        $b40bbe37, $c30c8ea1, $5a05df1b, $2d02ef8d);

function CalculCrc32(Octet: Byte; Crc: LongInt): LongInt;
begin
  CalculCrc32 := TableCrc32[byte(Crc xor LongInt(Octet))] xor ((Crc shr 8) and $00ffffff);
end;

Dans la partie implémentation, ajout des lignes suivantes :

function TCustomWebMemo.GetDocCrc32: LongInt;
var
  Index: Word;
  Crc32: LongInt;
begin
  // Calcule le crc32 dur les données au format HTML
  Crc32 := $ffffffff;
  for Index := 0 to length(Document.Body.innerHTML)-1 do
    Crc32 := CalculCrc32(Ord(Document.Body.innerHTML[Index]), Crc32);
  Result := Crc32;
end;

function TCustomWebMemo.GetDocChanged: Boolean;
var
  Crc32: LongInt;
begin
  // Réalise un Crc32 sur le texte colmplet
  Crc32 := GetDocCrc32;
  Result := not(Crc32 = FDocCrc32);
  FDocCrc32 := Crc32;
end;

procedure TCustomWebMemo.ResetDocChanged;
begin
  FDocCrc32 := GetDocCrc32;
end;

Dans la partie implementation, ajout de ResetDocChanged dans les méthodes suivantes.

procedure TCustomWebMemo.Clear;
begin
    if ReadOnly = False then
    begin
      Document.Body.innerHTML := '';
      ResetDocChanged;
    end
    else
    ClearWebCtrl;
    FLines.Clear;

end;

procedure TCustomWebMemo.LoadFromFile(const FileName: String);
begin
    Clear;
    FLines.LoadFromFile(FileName);
    WebCtrl.OleObject.Document.WriteLn(FLines.Text);
    ResetDocChanged;
end;

procedure TCustomWebMemo.SaveAs(const DefaultFileName: String);
begin
    if CanDo then
    begin
      Document.ExecCommand('SaveAs' , False , DefaultFileName);
      ResetDocChanged;
    end;
end;


Le : 02/03/2007 09:30:30
Source : COMPOSANT WEBMEMO
Salut Shining,

J'ai testé tes solutions 2 et 3, la première ne me semblant pas appropriée.

La troisième, celle qui me semble la plus adaptée, me pose un petit problème : la méthode LinesChange n'est jamais appelée.

Pour la seconde, c'est un peu la galère car on récupère vraiment toutes les actions du clavier. Ce qui est un peu normal. Par contre comment faire le tri ? Existe-t-il des fonctions comme en c qui permettent de savoir si un caractère peut être affiché ?

P.S. : Concernant le problème ShowFindDialog, c'est mon I.E. qui a totalement explosé sur l'une de mes machines (plus d'impression ni la possibilité d'ouvrir dans une nouvelle fenêtre) !

Merci

a+


Le : 22/02/2007 21:11:53
Source : COMPOSANT WEBMEMO
Bonsoir Shining,

Je me suis effectivement légèrement planté dans ma question. Il s'agissait bien d'un problème sur ShowFindDialog. Problème qui d'ailleurs ne se pose que sur l'un de mes PC. Toutes mes excuses !

J'ai répondu avec un peu de retard car je cherche comment ajouter une fonctionnalité qui fait défaut. Ce serait l'attribut Changed qui indiquerait si oui ou non le texte a été changé.

J'ai bien une petite piste qui serait d'utiliser l'état du Undo (si une action peut être annulée alors le document a été changé !) mais je ne sais pas comment effacer la liste des actions mémorisées (pour désactiver l'attribut Changed).

Aurais-tu une autre piste ?

sylvunix



Le : 09/02/2007 15:29:12
Source : COMPOSANT WEBMEMO
Bonjour Shining,

Je ressort ton composant des cartons à l'occasion d'un nouveau projet.

Je viens de constater un petit problème : la fonction WebMemo.ShowFontDialog ne déclenche pas la boîte de dialogue espérée. Je suis en Delphi 7 Professionnel sous XP. Cela fonctionne-t-il de ton côté ?

sylvunix



1 2


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.