Print Page | Close Window

Copiare intero .txt in editbox VC++

Printed From: IALweb
Category: Programmazione
Forum Name: C/C++ - VISUAL C++
Forum Discription: Discussioni legate al linguaggio principe
URL: https://forum.ialweb.it/forum_posts.asp?TID=16463898
Printed Date: 24/Apr/2019 at 06:49
Software Version: Web Wiz Forums 10.17 - http://www.webwizforums.com


Topic: Copiare intero .txt in editbox VC++
Posted By: sondavide
Subject: Copiare intero .txt in editbox VC++
Date Posted: 20/Ago/2012 at 15:46
Ciao a tutti, avrei bisogno di un aiuto!!!
Vorrei che il mio programmino prelevi il testo da un file .txt e lo scriva nel Text di una editbox...


Ho cercato un po' in giro, ma con VC++ sono davvero una schiappa... non ci sarebbe qualcosa in stile C?

In alternativa mi accontento anche di una funzione che si limiti ad aprire il file di testo (come se ci avessi cliccato due volte sopra per intenderci...)

Big smile



Replies:
Posted By: valeria.dea
Date Posted: 20/Ago/2012 at 16:07
Ciao sondavide,
ma hai provato in qualche modo o hai proprio bisogno di capire come dovresti fare?

Io non sono un portento, ma mi accingerei in questa maniera:
- utilizzerei le API di windos per aprire e leggere il file (openfile, readfile....)
- la stringa che ti serve poi la assegni alla variabile che avrai creato collegata alla tua editbox
- e poi UpdateData(FALSE) per visualizzare il testo nella editbox.

Purtroppo ora non ho un pc con VS installato per provare a buttare giù 2 righe e confermarti il mio metodo.
Sempre se stai usando le librerie MFC....altrimenti nn saprei proprio aiutarti

Spero che qualcun altro ti illumini meglio

Ciao e facci sapere perchè la tua esperienza può essere utile a qualcuno nei tuoi panni Wink




Posted By: sondavide
Date Posted: 20/Ago/2012 at 16:39
Sto utilizzando MFC app wizard (exe)
con visual faccio schifo, ho praticamente scritto tutte le funzioni in linguaggio C...

in stile C ho pensato di fare in questo modo:

...
...
  char parola[30];
  FILE* fp;
  fp=fopen("risultato.txt","r");


  CWnd* pWnd = GetDlgItem(IDC_text);
 
  while( fscanf(fp,"%s",parola)!=EOF)  
  pWnd->SetWindowText(parola);

...
...

il problema è che  la funzione SetWindowText cancella il testo presente nella editbox e lo sostituisce con la nuova parola... insomma nella editbox rimane solo l'ultima parola presente nel testo...

non esiste una funzione simile a SetWindowsText che scriva in append?

Purtroppo le API di windows non le ho mai usate :(


Posted By: valeria.dea
Date Posted: 20/Ago/2012 at 20:13
Ciao,
dovrebbe essere che lo cancella perchè tu riscrivi ogni volta qualcosa nella variabile "parola".
Dovresti invece utilizzare una funzione che ti concatena il testo che vuoi inserire.
Dovrebbe essere qualcosa tipo "append"




Posted By: valeria.dea
Date Posted: 20/Ago/2012 at 20:41
Scusami mi sono accorta di non aver letto bene il tuo post quindi ti ho risposto con argomenti che avevi già detto tu.
Ho trovato questa funzione
UINT WINAPI GetDlgItemText(
  _In_   HWND hDlg,
  _In_   int nIDDlgItem,
  _Out_  LPTSTR lpString,
  _In_   int nMaxCount
);

potresti appendere alla lpString che ottieni dalla tua editbox la parola che peschi dal file e poi usare il SetWindowsText come hai già fatto ma con la stringa intera. praticamente riscriverla ogni volta, anche perchè non credo si possa fare altrimenti (se qualcuno sa che sto dicendo una cavolata mi corregga).
Cioè io credo che comunque nella editbox tu debba far visualizzare un'unica stringa, non si dovrebbe poter concatenare stringhe diverse a livello di visualizzazione, ma dovresti crearne una unica prima e quindi concatenare prima di mandarla alla editbox.

Fammi sapere come va :)




Posted By: sondavide
Date Posted: 21/Ago/2012 at 11:52
Ho provato a concatenare l'intero testo in un'unica stringa, il risultato è un messaggio di errore con scritto "memoria insufficiente" Cry

Per il momento ho risolto creando un bottone che mi fa aprire e leggere direttamente il file di testo, ovviamente questo rende il mio programmino poco elegante...



Print Page | Close Window

Forum Software by Web Wiz Forums® version 10.17 - http://www.webwizforums.com
Copyright ©2001-2013 Web Wiz Ltd. - http://www.webwiz.co.uk