begin process at 2012 05 27 13:23:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > AFFICHER LA XEME LIGNE D'UN TEXTE

AFFICHER LA XEME LIGNE D'UN TEXTE


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :ligne, texte, text Niveau :Débutant Date de création :04/10/2004 Date de mise à jour :04/10/2004 15:01:41 Vu / téléchargé :3 584 / 142

Auteur : malik7934

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

 Description

Cliquez pour voir la capture en taille normale
Il s'agit simplement de choisir le path d'un fichier text, puis de dire quelle ligne on veut voir et cette dernière sera affichée dans un MessageBox! Utile pour traîter le contenu de fichiers...

Source

  • #include <windows.h>
  • #include "resource.h"
  • HINSTANCE hInst;
  • HWND hWnd;
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
  • BOOL CALLBACK myWindow(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
  • void OnBrowse(HWND hParent,BOOL bOpen, int idc_name);
  • BOOL GetLine(HWND hWnd);
  • void OnBrowse(HWND hParent,BOOL bOpen,int idc_name){
  • OPENFILENAME sOpenFile;
  • char szPath[MAX_PATH + 1];
  • BOOL bRet;
  • HWND hCtrl;
  • szPath[0] = '\0';
  • ZeroMemory(&sOpenFile,sizeof(OPENFILENAME));
  • sOpenFile.lStructSize = sizeof(OPENFILENAME);
  • sOpenFile.hwndOwner = hParent;
  • sOpenFile.lpstrFilter = "Fichiers Text (*.txt)\0*.txt\0\0";
  • sOpenFile.nFilterIndex = 1;
  • sOpenFile.lpstrFile = szPath;
  • sOpenFile.nMaxFile = MAX_PATH + 1;
  • sOpenFile.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST |
  • ((bOpen)? OFN_FILEMUSTEXIST : OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);
  • if(bOpen)
  • {
  • hCtrl = GetDlgItem(hParent,idc_name);
  • bRet = GetOpenFileName(&sOpenFile);
  • SetWindowText(hCtrl,szPath);
  • }
  • }
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  • {
  • return (int)DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,myWindow);
  • }
  • BOOL CALLBACK myWindow(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
  • switch(message) {
  • case WM_INITDIALOG:
  • return TRUE;
  • case WM_COMMAND:
  • switch(wParam) {
  • case IDC_BUTTON1:
  • OnBrowse(hWnd,TRUE, IDC_EDIT1);
  • return TRUE;
  • case IDC_BUTTON2:
  • DestroyWindow(hWnd);
  • return TRUE;
  • case IDC_EXECUTE:
  • GetLine(hWnd);
  • return TRUE;
  • default:
  • return FALSE;
  • }
  • default:
  • return FALSE;
  • }
  • return TRUE;
  • }
  • BOOL GetLine(HWND hWnd){
  • int i,nLen,iLine;
  • HWND hCtrl;
  • DWORD hSrcFile,dw,dwFileSize;
  • char* szData = NULL;
  • char* szSrc = NULL;
  • char* d;
  • hCtrl = GetDlgItem(hWnd,IDC_EDIT1);
  • nLen = GetWindowTextLength(hCtrl) + 1;
  • szSrc = (char*)malloc(nLen);
  • if (GetWindowText(hCtrl,szSrc,nLen) == 0){
  • free(szSrc);
  • MessageBox(hWnd,"Veuillez choisir un fichier","Fichier",MB_OK);
  • return FALSE;}
  • hSrcFile = CreateFile(szSrc,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
  • if(hSrcFile == INVALID_HANDLE_VALUE)
  • {
  • free(szSrc);
  • return FALSE;
  • }
  • free(szSrc);
  • dwFileSize = GetFileSize(hSrcFile,NULL)+1;
  • szData = (char*)malloc(dwFileSize);
  • if(!ReadFile(hSrcFile,szData,dwFileSize,&dw,NULL))
  • {
  • free(szData);
  • CloseHandle(hSrcFile);
  • return FALSE;
  • }
  • CloseHandle(hSrcFile);
  • *(szData + dwFileSize) = '\0';
  • d = szData;
  • i = (*d ? 1 : 0);
  • while(*d){
  • switch(*d){
  • case '\n':
  • *d='\0';
  • d++;
  • i++;
  • break;
  • default:
  • d++;
  • break;
  • }
  • }
  • d=NULL;
  • hCtrl = GetDlgItem(hWnd,IDC_EDIT2);
  • nLen = GetWindowTextLength(hCtrl) + 1;
  • szSrc = (char*)malloc(nLen);
  • GetWindowText(hCtrl,szSrc,nLen);
  • iLine = atoi(szSrc)-1;
  • free(szSrc);
  • if (iLine<0){
  • MessageBox(NULL, "Veuillez choisir un nombre positif!", "Erreur", MB_ICONERROR);
  • return FALSE;}
  • if (iLine >= i) {
  • MessageBox(NULL, "Ce fichier n'a pas autant de lignes!", "Erreur", MB_ICONERROR);
  • return FALSE;}
  • while(iLine--) szData += strlen(szData) + 1;
  • MessageBox(hWnd, szData,"la ligne demandée est...",NULL);
  • return TRUE;
  • }
#include <windows.h>

#include "resource.h"

HINSTANCE hInst;
HWND hWnd;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
BOOL CALLBACK myWindow(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
void OnBrowse(HWND hParent,BOOL bOpen, int idc_name);
BOOL GetLine(HWND hWnd);

void OnBrowse(HWND hParent,BOOL bOpen,int idc_name){
	OPENFILENAME sOpenFile;
	char szPath[MAX_PATH + 1];
	BOOL bRet;
	HWND hCtrl;

	szPath[0] = '\0';
	
	ZeroMemory(&sOpenFile,sizeof(OPENFILENAME));
	sOpenFile.lStructSize = sizeof(OPENFILENAME);
	sOpenFile.hwndOwner = hParent;
	sOpenFile.lpstrFilter = "Fichiers Text (*.txt)\0*.txt\0\0";
	sOpenFile.nFilterIndex = 1;
	sOpenFile.lpstrFile = szPath;
	sOpenFile.nMaxFile = MAX_PATH + 1;
	sOpenFile.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | 
		((bOpen)? OFN_FILEMUSTEXIST : OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT);

	if(bOpen)
	{
		hCtrl = GetDlgItem(hParent,idc_name);
		bRet = GetOpenFileName(&sOpenFile);
		SetWindowText(hCtrl,szPath);
	}
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	return (int)DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,myWindow);
}

BOOL CALLBACK myWindow(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){

	switch(message) {

	case WM_INITDIALOG:
			return TRUE;

	case WM_COMMAND:
		switch(wParam) {
	
			case IDC_BUTTON1:
				OnBrowse(hWnd,TRUE, IDC_EDIT1);
				return TRUE;

			case IDC_BUTTON2:
				DestroyWindow(hWnd);
				return TRUE;

			case IDC_EXECUTE:
				GetLine(hWnd);
				return TRUE;

			default:
				return FALSE;
		}
	default:
		return FALSE;

	}

	return TRUE;

}

BOOL GetLine(HWND hWnd){

	int i,nLen,iLine;
	HWND hCtrl;
	DWORD hSrcFile,dw,dwFileSize;
	char* szData = NULL;
	char* szSrc = NULL;
	char* d;

	hCtrl = GetDlgItem(hWnd,IDC_EDIT1);
	nLen = GetWindowTextLength(hCtrl) + 1;

	szSrc = (char*)malloc(nLen);

	if (GetWindowText(hCtrl,szSrc,nLen) == 0){ 
		free(szSrc); 
		MessageBox(hWnd,"Veuillez choisir un fichier","Fichier",MB_OK);
		return FALSE;}
	
	hSrcFile = CreateFile(szSrc,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

	if(hSrcFile == INVALID_HANDLE_VALUE)
	{
		free(szSrc);
		return FALSE;
	}
	free(szSrc);

	dwFileSize = GetFileSize(hSrcFile,NULL)+1;
	szData = (char*)malloc(dwFileSize);

	if(!ReadFile(hSrcFile,szData,dwFileSize,&dw,NULL))
	{
		free(szData);
		CloseHandle(hSrcFile);
		return FALSE;
	}
	CloseHandle(hSrcFile);

	*(szData + dwFileSize) = '\0';

	d = szData;
	i = (*d ? 1 : 0);

	while(*d){
		switch(*d){
		case '\n':
			*d='\0';
			d++;
			i++;
			break;
		default:
			d++;
			break;
		}
	}
	d=NULL;

	hCtrl = GetDlgItem(hWnd,IDC_EDIT2);
	nLen = GetWindowTextLength(hCtrl) + 1;
	szSrc = (char*)malloc(nLen);
	GetWindowText(hCtrl,szSrc,nLen);
	iLine = atoi(szSrc)-1;
	free(szSrc);

	if (iLine<0){
		MessageBox(NULL, "Veuillez choisir un nombre positif!", "Erreur", MB_ICONERROR); 
		return FALSE;}
	if (iLine >= i)	{
		MessageBox(NULL, "Ce fichier n'a pas autant de lignes!", "Erreur", MB_ICONERROR); 
		return FALSE;}

    while(iLine--) szData += strlen(szData) + 1;
	MessageBox(hWnd, szData,"la ligne demandée est...",NULL);
	
	return TRUE;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • bouton.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 361 octets
  • BOUTON.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 038 octets
  • BOUTON.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier537 octets
  • BOUTON.ncbTélécharger ce fichier [Réservé aux membres club]41 984 octets
  • BOUTON.optTélécharger ce fichier [Réservé aux membres club]48 640 octets
  • BOUTON.plgTélécharger ce fichier [Réservé aux membres club]2 471 octets
  • BOUTON.exeTélécharger ce fichier [Réservé aux membres club]28 672 octets
  • res.apsTélécharger ce fichier [Réservé aux membres club]32 472 octets
  • res.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 822 octets
  • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier956 octets

Télécharger le zip


 Historique

04 octobre 2004 10:33:29 :
Quelques corrections suite aux remarques de ymca2003
04 octobre 2004 14:22:48 :
corrections suite aux remarques de BruNews
04 octobre 2004 15:01:42 :
Changement de nom de la source pour éviter les confusions...

 Sources du même auteur

Source avec Zip Source avec une capture FENÊTRE AVEC OU SANS BOUTON
Source avec Zip RÉSIDUS BIQUADRATIQUES
CORNACCHIA ALGORITHM

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

Source avec Zip ANALYSEUR DE TEXTE (MAJ V2) par sholvaC
Source avec Zip GÉNÉRATEUR DE TEXTES ALÉATOIRES COHÉRENTS (CHAÎNES DE MARKOV... par CptPingu
Source avec Zip Source avec une capture TRAITEMENT AUTOMATIQUE TXT => SXW (XML COMPRESSÉ, POUR OPENO... par drdd
Source avec Zip EDITEUR DE TEXTE par xmenneo2003
PETIT EFFET DE TEXTE par RaZoR

Commentaires et avis

Commentaire de ymca2003 le 04/10/2004 10:24:04

il y a quelques bugs ans la gestion des erreurs et la libération de la mémoire :
- si la chaîne szSrc est vide, tu retourne FALSE sans libérér le pointeur (cette vérif peut meme être faite avant l'allocation de la châine vu que tu as sa longueur.
- si le fichier ne peut être ouvert, ce n'est pas la peine de le fermer avant de retourner.
- si la lecture échoue, il y a un free(szSrc) de trop (la chaîne est libérée juste avant).

Commentaire de malik7934 le 04/10/2004 10:28:30

c'est juste... j'ai fait tou ça un peu à l'arrache... j'vais faire les corrections que tu mentionnes! Thanx!

Commentaire de magic_Nono le 04/10/2004 11:28:37

mouep

tu peux rajouter la signification du y ds les com stp

car justque là, C afficher la Xieme ligne ...

sinon : Utile pour traîter le contenu de fichiers...
je vois po....
BFichierTxt ds mes srces correspond à cette desc, ce srce... ben...

++Nono.

Commentaire de malik7934 le 04/10/2004 11:40:32

Ecoute nono, je sais que tu as déjà tout vu tout vécu tout fait... tu ne manques jamais de le répéter encore et encore!

Moi je bosse sur un log qui doit sans arrêt ouvrir, lire, traîter des fichiers et j'utilise donc cette source à outrance!

"tu peux rajouter la signification du y ds les com stp"... t'es sérieux avec cette question ou bien s'est juste une vanne!!??

Commentaire de BruNews le 04/10/2004 12:12:48 administrateur CS

Salut malik7934,

GetWindowText(hCtrl,szSrc,nLen);
if(strcmp(szSrc,"") == 0) ...
Pas utile, GetWindowText() retourne longueur lue.

case '\r':
  memmove(d,d+1,strlen(d+1)+1);
C'est quoi le but de ce memmove ?

Mets toujours version RELEASE en source, c'est beaucoup moins gros et tout le monde pourra tester.

ciao...

Commentaire de malik7934 le 04/10/2004 12:25:08

Hello,

Thanx pour l'info sur GetWindowText et je prends note pour le "Release"...

En ce qui concerne le case '\r', ben vu qu'un retour à la ligne c'est "\r\n", je me débarasse du \r, puis je remplace \n par un \0 pour ensuite traîter.

Commentaire de malik7934 le 04/10/2004 14:18:03

Ah ben tiens, t'as raison... le memmove ne sert à rien ici... mais j'ai mis ça pourquoi moi??!! Je vais corriger...

Commentaire de DeAtHCrAsH le 04/10/2004 14:38:37

Yep malik,

Le titre de ta source est mal choisi, vire le Y mets simplement un truc du genre "AFFICHER LA Xème LIGNE D'UN TEXT".
Parceque quand tu mets XY, on s'attend a ce que le programme extrait les ordonnées mais aussi les abscisses.

Exemple:
[Code]//Le texte a traiter
a
b
salut toi![/Code]

[Code]GetLine(3);
-> Ca retourne "salut toi!".

GetLine(7,3);
-> Ca retourne "toi!"[/Code]

Voila ou ets l'idée.
Tu peux aussi facillement modifier ton code en incluant les abscisses, ainsi tu n'auras pas a modifier les titre de ta source.

Par exemple a la fin de ta fonction juste avant la MessageBox finale, tu ajoutes :
[Code]if(x!=0) {
for(int i=0; i<x; i++)
   szData++;
}[/Code]

Voila rien de bien compliqué.

A bientot pour une mise a jour.

Shell

Commentaire de malik7934 le 04/10/2004 15:03:19

Ok, Hier Vestanden DeAtHCrAsH!

J'ai modifié le nom... comme je n'ai pas besoin d'une source qui fasse abcsisse/ordonnée, je n'ai pas modifié la source mais le nom!

Thanx, Malik7934

Commentaire de DeAtHCrAsH le 04/10/2004 19:18:19

"Hier Vestanden DeAtHCrAsH! " ?????

Si c'est de l'allemand je cromprend pas :/

Shell

Commentaire de malik7934 le 04/10/2004 20:59:31

Yop, c'est de l'allemand: tous ceux qui ont du faire leur armée en Suisse, comme moi, auront entendu cette expression des milliards de fois! Ca veut dire "Présent - Compris!" ;o)

Commentaire de D1m3x le 08/10/2004 09:00:54

Salut,
une possibilité assez pour afficher une ligne voulue dans un texte est:
sauvegardé chaque ligne dans un multimap< int, string >, le premier paramètre sera le nombre de la ligne et le deuxième la ligne!

Ce n'est pas trop compliqué, il suffit, lors de la lecture du fichier, d'insérer automatiquement les lignes, une par une, dans le multimap, faisable avec une boucle for( ).

Autre possibilité que le faire lors de la lecture:
lire le fichier entier dans un buffer, ensuite avec une boucle quelconque,  lire le buffer, et lorsqu'on tombe sur un '\n' => ajouter ce qui a été lu dans le multimap, etc. (Bien sûr, si tu faits ca n'oublie pas d'effacer ce que tu as lu du buffer après l'avoir stocker dans le multimap!!!)

Ces possibilité sont a appliqué en C++ uniquement, et sont portables, donc assez recommandable, pour utiliser les multimap => #include <multimap>

Ciao ;)

[DmXx]

Commentaire de D1m3x le 08/10/2004 09:06:24

malik, pour de l'allemand ça se voit que c'est de l'allemand, sinon pour une traduction complète tu mets:
"Anwesend - Verstanden" Mais bon à l'armée c'est pas comme ça :D

enfin je c pas mdr jamais fait ^^:p

bon allez bonne prog encore ;)

ciao ;)

Commentaire de malik7934 le 08/10/2004 09:39:18

ANWESEND, c'est le mot du dico, HIER, c'est celui qu'on utilise dans le parler (en tous cas en Suisse)

;o)

Commentaire de magic_Nono le 08/10/2004 19:59:31

ANWESEND = présent
HIER = ici => "je suis ici" par extension

++
Magicalement
Nono.

PS: Malik pour améliorer BFichierTxt , c'est qu'une fonction qui manque?
Peux tu stp y mettre un com sur ce qui manque & peut etre améliorer... (on peux tjs faire mieu, lol)

Commentaire de malik7934 le 10/10/2004 19:46:08

C'est un site de prog ou un site de langue???

Magic... moi en temps que petit-suisse qui ai vécu pas mal de temps dans la partie germanophone de mon pays, je vais pas rentrer dans un débat sur le mot ANWESEND et le mot HIER. Faut sortir du "Wörterbuch" de temps en temps les enfants!!!

HIER se traduit par "présent" dans le langage MILITAIRE... c'est clair que ça veut dire "ici" aussi...

Hochachtungsvoll, Malik7934 ;o)

Commentaire de D1m3x le 10/10/2004 21:07:14

euh ... dsl de te contrarier, mais je parle allemand toute la journée  :D (j'habite quand même a la frontiere allemande en belgique ! :D) enfin bon les suisse et les allemands ont d'autres façons de s'exprimer parfois :D :p (rien contre les suisse !! :X) :D

Ciao ;)

Commentaire de malik7934 le 11/10/2004 09:47:32

ok! bon ben puisque tout le monde parle allemand ici, pourquoi on ne demanderait pas à BruNews de monter www.cppAufDeutsch.com ?? ;o)

Bonne journée, bonne prog et uf widerluege!!

Commentaire de magic_Nono le 11/10/2004 16:21:41

lol

au fine z herbes !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

RichEdit Paint [ par crocejf2000 ] Salut a tous,--&gt;OS Win98, Borland C++ 5Je suis toujours avec mon compilateur maison, et j'ai un petit probleme d'affichage de ma RichEdit -&gt; c'e pb avec tableau et fichier texte [ par krolanta ] Voila mon pb é que g un fichier texte avec des coordonnées et que je voudrais mettre chaque coordonnées ds une case du tableau.En fait ca revient a li Lire un fichier Texte Ligne par ligne [ par Ricpperso ] Bonjour,bon je fai un pti proget je voudrai savoir comment on fais pour lire un fichier Texte ligne par ligne, avec si possible le Cfile.merci d'avanc Text Aleatoire [ par ideosphere ] Bon voila je voudrai faire un prog ki affiche une ligne choisi aleatoirement dans un fichier text.Je sais comment faire pour afficher tout le contenu Lire une ligne d'un fichier texte [ par CassusGreg ] Salut à tous,Est-ce-qu'il existe une fonction pour lire une ligne de texte (terminé par 0x0D 0x0A) dans un fichier?Je suis sous VC++ 6merci aller à la ligne dans un champ texte VC++ [ par Vaughn018 ] Bonjour,après insertion d'un texte dans une ressource "edittext" qui a déjà certaines options activées (comme ES_MULTILINE), je ne vois jamais le text fichier texte [ par codavi ] Bonjour, Voilà, je viens de décrouvrir ce forum et je souhaiterais que quelqu'un m'apporte un peu d'aide. Je veux pouvoir lire/ecrire dans un fichier Recherche une ligne dans un fichier texte [ par kamelDEA ] Bonjour,J'ai un fichier texte qui contient 100 ligne.chaque ligne est composée de 4 valeurs décimales (valeur de probabilité)J'arrive pas à touver la Compilateur : AutoFormatage du texte [ par crocejf2000 ] Salut a tous,J'ai effectué un compilateur sous borland c++ 5 et je veut que lorsque j'edite mon source ca formatte automatiquement le texte : pour arr Compilateur : AutoFormatage du texte [ par crocejf2000 ] Salut a tous,J'ai effectué un compilateur sous borland c++ 5 et je veut que lorsque j'edite mon source ca formatte automatiquement le texte : pour arr


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,967 sec (4)

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