Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Текстовый массив в label


Автор: Santa12 20.7.2009, 12:21
Такая проблемка... Есть маленькая программка консольная - читает из файла четверостишия, и выводит на экран совпадающие по условию.  Пытаюсь сделать оконный проект, и вывести эти строки в label. Но label не хочет принимать char, ему нужен string...
Делаю следующее:

Код

    char name[120];
    String^ str;
    char* ptr = &name[120];

    while((fgets(name,120,fp) !=0)&& (z < 4))
   {
.....

        this->label1->Text = Ascii;



А в ответ получаю лишь что-то вроде: пmrяXн 
Я так понимаю, беда с кодировкой, но и строка как-то подлиньше должна быть... К тому же, строк должно быть четыре...

MS VC++ 2008

Автор: InvalidProperty 20.7.2009, 13:12
String^ str;

.Net? Вообще приложение на чем написано? Windows forms, mfc или что?

Автор: ISergeyN 20.7.2009, 13:25
Цитата(InvalidProperty @  20.7.2009,  13:12 Найти цитируемый пост)
Вообще приложение на чем написано

С++/CLI

Автор: InvalidProperty 20.7.2009, 13:27
char* ptr = &name[120];

ахтунг какой. почему нельзя просто

char *ptr = &name? и вообще, нахрена ptr, если он нигде не используется?

Добавлено через 1 минуту и 23 секунды
ISergeyN, это я и так понял. .net можно как в windows forms, так и в mfc использовать, поэтому и уточняю

Автор: Santa12 20.7.2009, 13:35
Цитата(InvalidProperty @  20.7.2009,  13:27 Найти цитируемый пост)
ахтунг какой. почему нельзя просто


Возможно ахтунг... Но я пока только учусь... ptr потому как не смог по другому в string перевести, ибо label.text требует string... Пардону прошу, Инфу черпаю из книг, форумов - где что нашел, то и попробовал )
Пытаюсь windows forms...

Код


    char name[120];
    char* ptr = &name[120];
       
     String^ Ascii = gcnew String( ptr,0,sizeof(name));

    while((fgets(name,120,fp) !=0)&& (z < 4))
    {  
             
            this->label1->Text = Ascii;



прошу пардону, запутался, и ен то копирнул

Автор: InvalidProperty 20.7.2009, 16:01
ну... во-первых, я вижу самую большую ошибку в том, что ты сначала через ###коллектор создаешь строку по поинтеру, а потом по этому поинтеру пишешь. попробуй сначала записать, потом строку создать (ибо стринг хранит экземпляр строки, а не указатель)

Добавлено через 39 секунд
т.е.

Код

    char name[120];
    char* ptr = &name[120];
       
    
    while((fgets(name,120,fp) !=0)&& (z < 4))
    {  
              String^ Ascii = gcnew String( ptr,0,sizeof(name));
            this->label1->Text = Ascii;


как минимум так, хотя код мне все равно не нравится

Добавлено через 2 минуты и 35 секунд
упс... прошу прощения, забыл про цензуру на форуме... там, где ты видишь ###коллектор должен быть гарбаджколлектор

Автор: Santa12 20.7.2009, 19:04
Спасибо, но... Все равно все то ж. Вместо текста крякозябры, и вместо строки лишь первое слово... Если это слово...

Автор: InvalidProperty 21.7.2009, 08:52
покажи весь код

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)