Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
1

CStdioFile не полностью пишет данные...

04.02.2011, 12:06. Показов 994. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Сломал уже всю голову... Значит проблема вот какого характера:

Я в ходе программы формирую необходимую мне строку, забирая данные из различных полей структуры... в результате имею некоторую переменную CString (это str2) в которой (смотрю исключительно через дебаг) лежит на данном этаме, что-то по типу:

str2; // "11 OBJECT-TYPE SYNTAX INTEGER "32423" MAX-ACCESS write-only STATUS current"

Cfile.SeekToEnd();
Cfile.WriteString(str2); (Здесь навожу на str2- лежит тоже самое, что написал выше, т.е. лежит правильный набор символов, который мне необходимо записать в файл. Но вот если здесь же я посмотрю параметры в данный момент времени у Cfile то обнаруживается непонятная вещь, там в одном из полей лежит следующее:

"11 OBJECT-TYPE SYNTAX INTEGER " " Вообщем-то вот эту часть он мне и записывает... не понятно то что, почему при правильных параметрах у str2 записывается лишь часть этой сформированной строки...

Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2011, 12:06
Ответы с готовыми решениями:

CStdioFile режим Append
Как открыть файл в режиме добавления записи (а не перезаписывании старого)? Пользуюсь методом...

operator = для объекта, содержащего CStdioFile
Приветствую всех. Возникла проблема с реализацией оператора присваивания для класса, содержащего...

Не пишет данные в файл
public ActionResult SaveEntrance() { ViewBag.Login = Request.Form; ...

Данные не полностью записываются в БД
Есть поле типа varchar(255). В него PHP скриптом пишутся ФИАС идентификаторы вида...

4
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
04.02.2011, 12:09 2
metoflex, В первую очередь ищи символ с нулевым кодом в строке. В текстовом виде его не видно, можно поискать программно под дебагером например.
0
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
04.02.2011, 12:16 3
Строчка str2 как собирается ?
0
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
04.02.2011, 12:19 4
metoflex, Кстати, может у тебя кавычки не экранированы в строке?

Присоединяюсь к вопросу zulkis
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
04.02.2011, 12:35  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
void CProcessingDataTree::CreateMibCode(CString str, HTREEITEM childfirst, HTREEITEM first, CString path)
//Method for create mib-code
{
 
    static int i=0;
    static int j=0;
    int k=0;
    int rez=0;
    CString str2, str3;
    CString type, strID;
    CString extstr;
    int y=0;
 
    do 
    {
        CStdioFile Cfile;
        Cfile.Open(path, CFile::modeWrite);
        str2="";
        str2.Format(_T(""));
        Cfile.WriteString(str2);
        CGenericNodeData* type;
        DWORD_PTR typer;
        typer=pTree->TreeCntrl.GetItemData(childfirst);
        type=(CGenericNodeData*)typer;
        if (!(childfirst==FIRST))
        {
            switch (type->Type)
            {
            case 0:
                {
                    CNodeDataValue* data;
                    DWORD_PTR dater;
                    dater=pTree->TreeCntrl.GetItemData(childfirst);
                    data=(CNodeDataValue*)dater;
                    if(data->Syntax==0)
                    {
                        str2.Format(_T("%s OBJECT IDENTIFIER ::= { "), pTree->TreeCntrl.GetItemText(childfirst));
                        if(childfirst==FIRST)
                        {
                            str2+="enterprises";
                        }
                        else
                        {
                            str2+=AddPrefixName(_T(""),pTree->TreeCntrl.GetParentItem(childfirst));
                        }
 
                        str3.Format(_T(" %d}\n\n"), data->ID);
                        str2+=str3;
                    }
                    else
                    {
                        str2.Format(_T("%s OBJECT-TYPE\nSYNTAX "), pTree->TreeCntrl.GetItemText(childfirst));
 
                        switch(data->Syntax)
                        {
                        case 0:
                            {
                                str2+="None\n";
                            }break;
                        case 1: 
                            {
                                str2+="INTEGER\n";
                            } break;
                        case 2:  
                            {
                                str2+="INTEGER\n"; 
                            } break;
                        case 3: 
                            {
                                str2+="OCTET STRING\n";
                            } break;
                        }
 
                        if(!(data->Units==""))
                        {
                            str2+="\"";
                            str2+=data->Units;
                            str2+="\"\n";
                        }
 
                        str2+="MAX-ACCESS ";
 
                        switch (data->Access)
                        {
                        case 0: 
                            {
                                str2+="read-only\n";
                            } break;
                        case 1: 
                            {
                                str2+="write-only\n";
                            }break;
                        case 2: 
                            {
                                str2+="read-write\n";
                            }break;
                        }
                        str2+="STATUS ";
                        switch (data->Status)
                        {
                        case 0: 
                            {
                                str2+="current\n"; 
 
                            } break;
                        case 1: 
                            {
                                str2+="deprecated\n";
 
                            }break;
                        case 2: 
                            {
                                str2+="obsolete\n";
 
                            }break;
                        }
 
                        if(!(data->Description==""))
                        {
                            str2+="\"";
                            str2+=data->Description;
                            str2+="\"\n";
                        }
                        str2+="::= {";
 
                        if(childfirst==FIRST)
                        {
                            str2+="enterprises";
                        }
                        else
                        {
 
                            str2+=AddPrefixName(_T(""),pTree->TreeCntrl.GetParentItem(childfirst));
                        }
                        str3.Format(_T(" %d"), data->ID);
                        str2+=str3;
                        str2+="}\n\n";
                    }
                    Cfile.SeekToEnd();
                    Cfile.WriteString(str2);  // Вот та злосчастная строка!!!
 
                }
                break;
            case 1:
                {
 
                    CNodeDataTrap* data;
                    DWORD_PTR dater;
                    HTREEITEM NODE;
                    dater=pTree->TreeCntrl.GetItemData(childfirst);
                    data=(CNodeDataTrap*)dater;
                    str2.Format(_T("%s NOTIFICATION-TYPE\n"), pTree->TreeCntrl.GetItemText(childfirst));
 
 
                    if(!(data->List[i]=="NULL"))
                    {
                        str2+="OBJECTS {";
 
                        for (int i=0;i<=3;i++)
                        {
                            NODE=pTree->TreeCntrl.FindType2(pTree->TreeCntrl.CreationID(data->List[i],0),0,FIRST);
                            str2+=pTree->TreeCntrl.GetItemText(NODE);
 
                            if(!(i==3))
                            {
                                str2+=", ";
                            }
                        }
 
                        str2+="}\n";
 
                    }
                    str2+="STATUS ";
 
                    switch (data->Status)
                    {
                    case 0: 
                        {
                            str2+="current\n"; 
 
                        } break;
                    case 1: 
                        {
                            str2+="deprecated\n";
 
                        }break;
                    case 2: 
                        {
                            str2+="obsolete\n";
 
                        }break;
                    }
 
                    if(!(data->Description==""))
                    {
                        str2+="DESCRIPTION ";
                        str2+="\"";
                        str2+=data->Description;
                        str2+="\"\n";
                    }
                    str2+="::= {";
 
                    if(childfirst==FIRST)
                    {
                        str2+="enterprises";
                    }
                    else
                    {
                        str2+=pTree->TreeCntrl.GetItemText(pTree->TreeCntrl.GetParentItem(childfirst));
                    }
 
                    str3.Format(_T(" %d"), data->ID);
                    str2+=str3;
                    str2+="}\n\n";
                    Cfile.SeekToEnd();
                    Cfile.WriteString(str2);
 
                }break;
            }
        }
        Cfile.Close();
 
        if (pTree->TreeCntrl.GetChildItem(childfirst))
        {
            CreateMibCode(str,pTree->TreeCntrl.GetChildItem(childfirst),first, path); 
        }
    }
    while (childfirst=pTree->TreeCntrl.GetNextSiblingItem(childfirst));
 
    return;
}
Вот скинул код, тут можно приблизительно понять, как я собираю строку. Символы кавычек я использую, но строку с ними создаю как и полагается, в виде: str+="\"";

Добавлено через 2 минуты
Самим кодом не заморачивайтесь, главное здесь-ошибка в плане str2 и Cfile...

Добавлено через 1 минуту
Это все обработка данных, заложенных в узлах дерева (CTreeCtrl).

Что-то здесь наверняка элементарное, но вот уже целый час сижу, голову ломаю..

Добавлено через 8 минут
Вот сделал скрины дебага:

CStdioFile не полностью пишет данные...
(Это данные что лежат в str2)

CStdioFile не полностью пишет данные...
(Это то что в одном из разделов у Cfile)
0
04.02.2011, 12:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2011, 12:35
Помогаю со студенческими работами здесь

CStdioFile не поддерживает чтение файлов в формате Unicode. Что делать?
К сожалению CStdioFile не поддерживает чтение текстовых файлов в формате Unicode. Может быть...

Не пишет данные в БД. Код есть
Здравствуйте все! Буду очень благодарен вам, если поможете! Есть БД и таблица в ней...

Не пишет данные в базу SQL
Добрый вечер. Программирую относительно недавно. сейчас пишу маленький проект на банковскую...

Xml . не пишет данные в фаил
private void sAVEXMLToolStripMenuItem_Click(object sender, EventArgs e) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru