Accueil > Forum > > > > Tableau dynamique
Tableau dynamique
mardi 1 juillet 2008 à 09:48:18 |
Tableau dynamique

RideIsLife
|
Bonjour, J'ai une petite question à poser à propos des tableaux dynamiques, je n'ai rien trouvé qui pouvait m'aider sur le forum. J'ai développé un serveur UDP qui stocke dans un tableau dynamique les nom, adresse IP et numéro de port de chaque client qui se connecte au serveur. Ce que je veux faire en fait, c'est supprimer de mon tableau dynamique les coordonnées complètes de mon client si celui ci ne me donne pas de signe de vie au bout d'un certain temps. Le seul problème est que je ne sais pas comment supprimer en l'occurence 3 cases de mon tableau dynamique, celles ci pouvant se trouver n'importe où dans le tableau. Je suis débutant en delphi, je pensais pouvoir utiliser la fonction Free, mais celle ci ne fonctionne qu'avec des TObject, ce qui n'est pas le type de mon tableau de string. Il y a t il un moyen simple de libérer la mémoire et donc des cases de mon tableau ? Ou faut il créer une procédure, si oui en utilisant quelle genre de fonction ? Voilà je ne sais pas si quelqu'un a déjà été confronté au problème. D'avance merci.
|
|
mardi 1 juillet 2008 à 10:17:34 |
Re : Tableau dynamique

cantador
|
Bonjour, Pourquoi ne pas créer une p'tit table avec des champs, stocker les données et ensuite faire une p'tit recherche sur la table afin de repérer l'enregistrement à supprimer. non ? un tableau de string pour gérer ce truc là je le sens pas bien.. cantador 
|
|
mardi 1 juillet 2008 à 10:27:53 |
Re : Tableau dynamique

RideIsLife
|
Salut, Merci pour ta réponse. En fait il était question que j'utilise effectivement une base de données au départ. Mais quand j'ai proposé cette solution à la personne pour laquelle je travaille, cela a été refusé car à priori trop long l'accès en mémoire si le fichier de la base de données est écrit en dur. C'est à ce genre de table que tu faisais référence ? Ou existe t il un autre type de "table", non nécessairement écrite dans un fichier, plus pratique d'utilisation qu'un tableau ? Merci.
|
|
mardi 1 juillet 2008 à 12:13:32 |
Re : Tableau dynamique

cantador
|
car à priori trop long l'accès en mémoire
oui, le temps devient un souci au delà d'un grand nombre de données dans une table..(d'autres facteurs interviennent également) mais dans ton cas, tu supprimes l'enregistrement dans un temps relativement cours (absence de signe de vie..) qu'on peut estimer à 3 mois environ.. en 3 mois, tu n'auras pas énormément de données..et donc le traitement sera rapide. et puis il te faut bien assurer aussi la persistance de l'information. le stockage ? tu peux stocker dans un fichier texte (record, txt, ini, csv..etc) + difficile à gérer Moi je prendrai une table car en général il y a toujours une suite à ce genre d'exercice qui va entraîner d'autres problèmes.
cantador
|
|
mardi 1 juillet 2008 à 12:16:17 |
Re : Tableau dynamique

fbalien
|
Bonjour
faut chercher l'index de ta case à supprimer décaler tous les autres enregistrement a partir de cette index index +1 va donc écraser index; index +2 va écraser index +1 etc puis redimensionnement du tableau à -1
voila pour le principe
|
|
mardi 1 juillet 2008 à 12:17:40 |
Re : Tableau dynamique

florenth
|
Salut, Le plus simple, s'il s'agit d'une liste de chaînes, c'est d'utiliser un TStringList (cf Google si tu ne connais pas) car il possède une méthode Delete(index) qui supprime la index-ième chaîne. Sinon, si ce n'est pas que des chaînes, le mieux est de passer par une liste chaînée (Google là aussi, le web en regorge) Sinon encore, tu peux tout simplement déplacer toutes les cases de ton tableau qui suivent celle que tu veux enlever d'un rang en arrière. Comme ceci : procedure DeleteFromTab(Index: Integer; var Tab: array of TBidule); // TBidule à remplacer par ton type à toi begin while Index < High(Tab) do begin Tab[Index] := Tab[Index + 1]; Inc(Index); end; SetLength(Tab, Length(Tab) - 1); end; mais c'est la méthode la plus lente. (la plus simple aussi) Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]
|
|
mardi 1 juillet 2008 à 12:18:57 |
Re : Tableau dynamique

florenth
|
Ah, on s'est croisés fablien !
Sinon, pour qu'on t'aide un peu plus précisément, il faudrait voir au moins le code de déclaration du tableau, pour voir sa structure.
|
|
mardi 1 juillet 2008 à 12:30:46 |
Re : Tableau dynamique

Guillemouze
|
voici un petit prototype de fonction que j'ai fait pour manipuler les tableaux. Tu as juste a remplacer X par ton type et ca devrait marcher. C'est la meme que celle de florenth, mais légèrement plus efficace je pense.
function ArrayRemove(var AArray: T<X>DynArray; Index: integer): <X>; var L: integer; begin L := Length(AArray); if (Index >= L) or (Index < 0) then raise EArrayError.CreateFmt(SArrayIndexError, [Index]) else begin Result := AArray[Index]; MoveMemory(@AArray[Index], @AArray[Index+1], (L - Index - 1) * SizeOf(<X>)); SetLength(AArray, L-1); end; end;
|
|
mardi 1 juillet 2008 à 12:51:03 |
Re : Tableau dynamique

florenth
|
En effet, MoveMemory() est un peu plus rapide que déplacer les éléments un par un. Mais, dans tous les cas, l'utilisation d'un tableau n'est ni recommandable, ni recommandé. Franchement, une liste chaînée est bien plus rapide. Surtout si tu veux supprimer le troisième élément d'un tableau qui en contient 1000. Après, une table de bdd peut s'avérer utile si le projet devient "gros" et s'il y a besoin de persistence. Mais entre un tableau et une table, même si les mots diffèrent de deux lettres, il y a tout un monde  ! Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]
|
|
mardi 1 juillet 2008 à 14:03:54 |
Re : Tableau dynamique
|
Cette discussion est classée dans : dynamique, serveur, tableau, supprimer, client
Répondre à ce message
Sujets en rapport avec ce message
suppression dynamique [ par seeev ]
Bonjour, j'ai un probleme dont je n'arrive pas à me sortir.je stoque des TSpeedButton dans un tableau de manière à pouvoir les créer, les afficher et
supprimer tableau dynamique multidimensionnel [ par richarddum ]
Salut, Est-il possible de supprimer un tableau dynamique ? tableau : array of array [0..1] of string; affectation par la commande setlength(tablea
Tableau dynamique et depassement de capacité ??? [ par elguevel ]
Voila pour être bref, j'utilise une fonction recursive qui va charger tout les fichiers de mon disque dans un Tableau. (déja vous vous dite.. "ce mec
envoyer un OleVariant par socket [ par Rems ]
Bonsoir à tous..j'ai besoin d'aide car je n'arrive pas passer un OleVariant (ClientDataSet.Data) du client au serveur et vice versa utilisant les soc
TIdTCPServer indy 9 [ par templeofboom ]
Bonjour dans le cadre du dev d'une petite appli client server je voudrai pouvoir activer mon serveur puis, pouvoir le désactiver et le relancer sur u
supprimer un item dans un array [ par natsou_k ]
Salut a tous, j ai un petit probleme.Connaissez vous une procédure qui supprime un item d un tableau svp?j'ai celle-ci mais j'ai des ennui lorsque l'i
comment créé une com. entre serveur/client avec indy [ par bisousnours13 ]
venez a mon aidecomment je dois my prendre pour créé un serveur/client tcp avec les composent indyidTCPclient et idTCPservermerci
pb client/serveur + proxy [ par templeofboom ]
Bonjour, voila dans le cadre du developpement d'une appli client serveur je suis ammené a devoir développer un client pouvant se connecter a une machi
Chat Client/serveur avec Compoisants Indy [ par leobaillard ]
Bonjour, je suis assez novice en delphi et je fais un chat avec les indy en delphi 7. Mais il y a un problème. Je n'arrive pas à récupérer (dans un mé
tableau dynamique à deux dimensions dans une classe [ par Koraluv ]
Salut à tous!Je suis débutante en delphi et je voudrai créer une classe qui ai comme attribut un tableau dynamique à deux dimentions de TCellule.je l'
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|