|
Trouver une ressource
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 !
Sujet : Tableau dynamique [ Divers / Débutant(e) ] (RideIsLife)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|