FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Je teste PANORAMIC V 1 beta 1
Des DLL pour Panoramic ? - Page 2 Emptypar papydall Aujourd'hui à 2:48

» bouton dans autre form que 0
Des DLL pour Panoramic ? - Page 2 Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Des DLL pour Panoramic ? - Page 2 Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Des DLL pour Panoramic ? - Page 2 Emptypar Klaus Hier à 10:23

» PANORAMIC V 1
Des DLL pour Panoramic ? - Page 2 Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Des DLL pour Panoramic ? - Page 2 Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Des DLL pour Panoramic ? - Page 2 Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Des DLL pour Panoramic ? - Page 2 Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Des DLL pour Panoramic ? - Page 2 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Des DLL pour Panoramic ? - Page 2 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Des DLL pour Panoramic ? - Page 2 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Des DLL pour Panoramic ? - Page 2 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Des DLL pour Panoramic ? - Page 2 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Des DLL pour Panoramic ? - Page 2 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Des DLL pour Panoramic ? - Page 2 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Des DLL pour Panoramic ?

Aller en bas 
+2
Minibug
jean_debord
6 participants
Aller à la page : Précédent  1, 2
AuteurMessage
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyDim 19 Déc 2021 - 20:52

Merci pour ces exemples. Effectivement, on peut stocker un tableau à plusieurs dimensions dans un tableau à une dimension. Je m'en sers dans certains programmes, notamment pour mémoriser des matrices symétriques  (on mémorise la demi-matrice supérieure dans un tableau monodimensionnel, cela gagne de la place).

Mais il faut alors récrire tous les algorithmes, avec le risque d'erreur que cela comporte !

Donc je reviens aux chaînes de caractères. Voici un exemple en FBCroco.

Code:

const CR = chr(13)

dim mat$

mat =       " 2  1   5 -8   0" + CR
mat = mat + " 7  6   2  2  17" + CR
mat = mat + "-1 -3 -10  4 -10" + CR
mat = mat + " 2  2   2  1   7"

On n'utilise que 2 caractères séparateurs : l'espace pour les colonnes et le retour-chariot pour les lignes.

Une procédure SPLIT permet de découper la chaîne afin de remplir un tableau classique à 2 dimensions sur lequel se font les calculs.

A titre indicatif, voici un programme complet en FBCroco. Attention : l'instruction SPLIT ne fonctionne pas dans la version actuelle. Il faudra attendre la prochaine mise à jour !

Code:

' *******************************************************************
' Solution d'un systeme d'equations lineaires (methode de Gauss-Jordan)
' *********************************************************************

const CR = chr(13)

dim mat$

mat =       " 2  1   5 -8   0" + CR
mat = mat + " 7  6   2  2  17" + CR
mat = mat + "-1 -3 -10  4 -10" + CR
mat = mat + " 2  2   2  1   7"

' Lecture des donnees

dim row$(), elem$()
dim nrow%, ncol%, i%, j%, res%

nrow = split(mat, CR, row())
ncol = split(row(1), " ", elem())

dim a(nrow, ncol), det

for i = 1 to nrow
  ncol = split(row(i), " ", elem())
  for j = 1 to ncol
    a(i,j) = val(elem(j))
  next j
next i

print : print "Matrice du systeme" : print
for i = 1 to nrow
  for j = 1 to ncol
    print a(i,j),
  next j
  print
next i

res = gaussjordan(a(), det)

print : print "Matrice inverse et vecteur solution" : print
for i = 1 to nrow
  for j = 1 to ncol
    print using "####.####"; a(i,j);
  next j
  print
next i

print : print "Determinant : "; using "####.####"; det

end


function gaussjordan% (a(), det)
' ------------------------------------------------------------------
' Algorithme de Gauss-Jordan pour une matrice a(1..n, 1..m), m >= n
' ------------------------------------------------------------------
' En entree :
' la sous-matrice a(1..n, 1..n) contient les coefficients
' la sous-matrice a(1..n, (n+1)..m) contient le(s) vecteur(s) constant(s)
'
' En sortie :
' la sous-matrice a(1..n, 1..n) contient la matrice inverse
' la sous-matrice a(1..n, (n+1)..m) contient le(s) vecteur(s) solution(s)
' le determinant de la matrice originelle est retourne dans det
' la fonction retourne un code d'erreur :
'  0 : pas d'erreur
' -1 : dimensions incompatibles (n > m)
' -2 : matrice quasi-singuliere
' ------------------------------------------------------------------

  const EPS = 1.0E-15

  dim n%, m%      ' Bornes de a
  dim i%, j%, k%  ' Indices de boucles
  dim ik%, jk%    ' Coordonnees du pivot
  dim pvt         ' Pivot
  dim t           ' Variable auxiliaire

  n = ubound(a, 1)
  m = ubound(a, 2)

  if n > m then return -1

  dim prow(n)  ' Sauvegarde la ligne du pivot
  dim pcol(n)  ' Sauvegarde la colonne du pivot
  dim mcol(n)  ' Sauvegarde une colonne de la matrice

  det = 1
  k = 1

  while k <= n
    ' Recherche du plus grand pivot dans la sous-matrice a[k..n, k..n]
    pvt = a(k, k)
    ik = k
    jk = k
    for i = k to n
      for j = k to n
        if abs(a(i, j)) > abs(pvt) then
          pvt = a(i, j)
          ik = i
          jk = j
        end_if
      next j
    next i

    ' Pivot trop faible ==> matrice quasi-singuliere
    if abs(pvt) < EPS then det = 0 : return -2

    ' Sauver la position du pivot
    prow(k) = ik
    pcol(k) = jk

    ' Mettre a jour le determinant
    det = det * pvt
    if ik <> k then det = -det
    if jk <> k then det = -det

    ' Echanger la ligne courante (k) avec la ligne du pivot (ik)
    if ik <> k then
      for j = 1 to m
        swap a(k, j), a(ik, j)
      next j
    end_if

    ' Echanger la colonne courante (k) avec la colonne du pivot (jk)
    if jk <> k then
      for i = 1 to n
        swap a(i, k), a(i, jk)
      next i
    end_if

    ' Stocker la colonne k de a dans mcol et mettre cette colonne a 0
    for i = 1 to n
      if i <> k then
        mcol(i) = a(i, k)
        a(i, k) = 0
      else
        mcol(i) = 0
        a(i, k) = 1
      end_if
    next i

    ' Transformer la ligne du pivot
    for j = 1 to m
      a(k, j) = a(k, j) / pvt
    next j

    ' Transformer les autres lignes
    for i = 1 to n
      if i <> k then
        t = mcol(i)
        for j = 1 to m
          a(i, j) = a(i, j) - t * a(k, j)
        next j
      end_if
    next i

    k = k + 1
  end_while

  ' Echanger les lignes de la matrice globale
  for i = n to 1 step -1
    ik = pcol(i)
    if ik <> i then
      for j = 1 to m
        swap a(i, j), a(ik, j)
      next j
    end_if
  next i

  ' Echanger les colonnes de la matrice inverse
  for j = n to 1 step -1
    jk = prow(j)
    if jk <> j then
      for i = 1 to n
        swap a(i, j), a(i, jk)
      next i
    end_if
  next j

  return 0
end_function
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyLun 20 Déc 2021 - 18:40

Je viens de publier une nouvelle version de KGF.dll donnant la possiblité de lire et/ou modifier des tableaux simulés en 2 ou 3 dimensions, quelque oit le type des données, donc même de type chaîne de caractères. Il y a un programme de démo qui montre précisément cela. J'ai également publié l'unite Delphi contenant toutes les fonctions nécessaires ainsi que l'objet MDA.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyJeu 23 Déc 2021 - 0:45

Je viens de publier la doc de la nouvelle version de KGF.dll. Dans la section des "Objets", il y a un nouvel objet MDA. Et dans cette partie, j'ai non seulement documentée de façon détaillée la technique d'accès aux tableaux de Panoramic, mais également une unité Delphi totalement indépendante de KGF et utilisable partout réalisant l'accès aux tableaux, et, dans ses commentaires, une petite routine permettant de déterminer si le programme Panoramic en cours est en mode "compilé" ou "interpêté"...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 8:17

Merci Klaus Smile

J'ai vu tout cela dans l'aide en ligne. Le lien sur KGF.chm ne semble pas fonctionner.

La prochaine version de FBCroco sortira dans quelques jours. Les DLL pour Panoramic se limiteront aux variables simples. Les tableaux viendront ensuite.

Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 9:02

Citation :
Le lien sur KGF.chm ne semble pas fonctionner.
Curieux...

Ma signature est:
Des DLL pour Panoramic ? - Page 2 Aa188

Lorsque je clique sur KGF.chm, j'obtiens un nouvel olglet avec:
Des DLL pour Panoramic ? - Page 2 Aa226

Il suffit de choisir "Enregistrer" puis cliquer siur OK et on a le fichier KGFchm.zip dans le dossier choisi. Dézipper ce fichier produit KGF.chm.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7003
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 12:01

Bonjour Klaus
Je confirme ce qu'a dit jean_debord.
Aucun lien n'est fonctionnel  Sad
Ni KGF.dll(en format ZIP), ni ApplicationIcons.dll(en format Zip), ni KGF.chm
ça renvoie vers cette page : https://servimg.com/view/18686814/701


EDIT

Maintenant quand je clique sur un lien, ça ouvre un autre onglet furtivement et se ferme immédiatement sans que l'on puisse voire quelque chose Crying or Very sad
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 12:41

Oui, c'est curieux. Je vais approfondir cela après Noël.
An attendant, voisi les liens opérationnels
KGF.chm: http://klauspanoramic.infinityfreeapp.com/KGFchm.zip
KGF.dll: http://klauspanoramic.infinityfreeapp.com/KGF.zip

EDIT le 24/12/2021 = 13h59
Les liens fonctionnent à nouveau. Je n'ai rien fait et je ne sais pas ce qui s'est passé.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7003
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 14:31

Pardon Klaus, mais ça ne fonctionne toujours pas même avec les liens que tu viens de donner.
J'ai trouvé une astuce : il suffit  de copier le lien puis le coller dans la recherche Google et ... tout est bien qui finit bien.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 14:36

Je ne comprends pas, Papydall. Même maintenant, si je clique sur ces liens, cela fonctionne.

Enfin, si tu as trouvé un moyen, ça peut aller...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyVen 24 Déc 2021 - 20:28

Je viens d'essayer à nouveau. Cette fois-ci le lien a fonctionné !

J'ai donc bien le fichier KGF.htm
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyMar 28 Déc 2021 - 11:54

@jean_debord
Je viens de tomber par hasard sur un code FreeBasic pour programmer des matrices, je ne sais pas si cela peut-être utile mais le voici:
Code:
type Matrix
    dim as double m( any , any )
    declare constructor ( )
    declare constructor ( byval x as uinteger , byval y as uinteger )
end type
 
constructor Matrix ( )
end constructor
 
constructor Matrix ( byval x as uinteger , byval y as uinteger )
    redim this.m( x - 1 , y - 1 )
end constructor
 
operator * ( byref a as Matrix , byref b as Matrix ) as Matrix
    dim as Matrix ret
    dim as uinteger i, j, k
    if ubound( a.m , 2 ) = ubound( b.m , 1 ) and ubound( a.m , 1 ) = ubound( b.m , 2 ) then
        redim ret.m( ubound( a.m , 1 ) , ubound( b.m , 2 ) )
        for i = 0 to ubound( a.m , 1 )
            for j = 0 to ubound( b.m , 2 )
                for k = 0 to ubound( b.m , 1 )
                    ret.m( i , j ) += a.m( i , k ) * b.m( k , j )
                next k
            next j
        next i
    end if
    return ret
end operator
'some garbage matrices for demonstration
dim as Matrix a = Matrix(4 , 2)
a.m(0 , 0) = 1 : a.m(0 , 1) = 0
a.m(1 , 0) = 0 : a.m(1 , 1) = 1
a.m(2 , 0) = 2 : a.m(2 , 1) = 3
a.m(3 , 0) = 0.75 : a.m(3 , 1) = -0.5
dim as Matrix b = Matrix( 2 , 4 )
b.m(0 , 0) = 3.1 : b.m(0 , 1) = 1.6 : b.m(0 , 2) = -99 : b.m (0, 3) = -8
b.m(1 , 0) = 2.7 : b.m(1 , 1) = 0.6 : b.m(1 , 2) = 0 : b.m(1,3) = 21
dim as Matrix c = a * b
print c.m(0, 0), c.m(0, 1), c.m(0, 2), c.m(0, 3)
print c.m(1, 0), c.m(1, 1), c.m(1, 2), c.m(1, 3)
print c.m(2, 0), c.m(2, 1), c.m(2, 2), c.m(2, 3)
print c.m(3, 0), c.m(3, 1), c.m(3, 2), c.m(3, 3)
je l'ai trouvé ici
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12289
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyMar 28 Déc 2021 - 12:46

Une astuce pour gérer des matrices en Basic - bien.
Delphi a déjà tout ce qu'il faut pour gérer les marices.
Le probème étalt le lien entre Panoramic et Delphi pour passer des matrices.

Outre la solution que j'ai proposée ci-dessus (via des tableaux multi-dimensionnels simulés par des tableaux uni-dimensionnels); il reste la solution de la mémoire partagée que représente mon objet "SharedMemory" dont la documentation se trouve ici: http://klauspanoramic.infinityfreeapp.com/ObjetSharedMemory.html#SharedMemory_fr

Cela permet de travailler directement sur des zones mémoires partagées entre Panoramic et une DLL en Delphi, et de gérer en particulier des tableaux, mais pas que.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
jean_debord

jean_debord


Nombre de messages : 1250
Age : 69
Localisation : Limoges
Date d'inscription : 21/09/2008

Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 EmptyMar 28 Déc 2021 - 15:00

@silverman :

Oui c'est un bel exemple de "Programmation Orientée Objet".

@Klaus :

Toujours le même problème. Je n'arrive pas à accéder au lien !

J'obtiens le message "Votre accès à Internet est bloqué" !

EDIT : j'y suis arrivé finalement. Je pense que c'est un bug de Windows.
Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





Des DLL pour Panoramic ? - Page 2 Empty
MessageSujet: Re: Des DLL pour Panoramic ?   Des DLL pour Panoramic ? - Page 2 Empty

Revenir en haut Aller en bas
 
Des DLL pour Panoramic ?
Revenir en haut 
Page 2 sur 2Aller à la page : Précédent  1, 2
 Sujets similaires
-
» Aide-mémoire des mots-clés Panoramic
» Logithèque : une base de données en Panoramic pour Panoramic
» Des DLL pour Panoramic
» POUR PANORAMIC
» pour panoramic

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Expériences autour de PANORAMIC :: Crocodile Basic-
Sauter vers: