Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116

E2277 Lvalue required

24.06.2014, 21:41. Показов 4983. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
что бы значила такая ошибка? вылетает при попытке присвоить массиву char-ов значение ячейки TStringGrid (с использованием c_str())
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2014, 21:41
Ответы с готовыми решениями:

[C++ Error] E2277 Lvalue required
Здравствуйте помоги разобратся что за ошибка //--------------------------------------------------------------------------- ...

Ошибка E2277 Lvalue required
У меня есть структура struct equip { int id; char name; float price; };и массив equip list;мне нужно...

Ошибка "E2277: Lvalue required"
#include <vcl.h> #pragma hdrstop #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; ...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
24.06.2014, 22:33
c_str() находится слева от знака присваивания? Это ж константный указатель...
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
24.06.2014, 22:38  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
c_str() находится слева от знака присваивания? Это ж константный указатель...
нет конечно... ну типа

C
1
char *str = grid->Cells[0][0].c_str(); //и тут ошибка
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
24.06.2014, 22:45
Не наблюдаю никакой ошибки:
Миниатюры
E2277 Lvalue required  
0
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
24.06.2014, 23:34  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Не наблюдаю никакой ошибки:
ну не знаю, может дело в том что у меня этот массив часть структуры... короче вот полный код...

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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
typedef struct
{
        char site[500];
        char email[500];
        char login[500];
        char pass[500];
        char about[500];
} Record;
//---------------------------------------------------------------------------
char *path = "pmdb.bin";
int count = 1;
Record *rec = new Record[count];
//HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
//---------------------------------------------------------------------------
bool Save(Record *rec, int *count, PCHAR path)
{
        FILE *fp = fopen(path, "wb");
        if (!fp) return false;
        int len;
        for(int i = 0; i < (*count); i++)
        {
                len = strlen(rec[i].site);
                fwrite(&len, sizeof(int), 1, fp);
                fwrite(rec[i].site, sizeof(char), len, fp);
                len = strlen(rec[i].email);
                fwrite(&len, sizeof(int), 1, fp);
                fwrite(rec[i].email, sizeof(char), len, fp);
                len = strlen(rec[i].login);
                fwrite(&len, sizeof(int), 1, fp);
                fwrite(rec[i].login, sizeof(char), len, fp);
                len = strlen(rec[i].pass);
                fwrite(&len, sizeof(int), 1, fp);
                fwrite(rec[i].pass, sizeof(char), len, fp);
                len = strlen(rec[i].about);
                fwrite(&len, sizeof(int), 1, fp);
                fwrite(rec[i].about, sizeof(char), len, fp);
        }
        fclose(fp);
        return true;
}
//---------------------------------------------------------------------------
bool Load(Record *rec, int *count, PCHAR path)
{
        FILE *fp = fopen(path, "rb");
        if (!fp) return false;
        int len;
        Record *tmp;
        while(!EOF)
        {
                fread(&len, sizeof(int), 1, fp);
                fread(rec[(*count)-1].site, sizeof(char), len, fp);
                fread(&len, sizeof(int), 1, fp);
                fread(rec[(*count)-1].email, sizeof(char), len, fp);
                fread(&len, sizeof(int), 1, fp);
                fread(rec[(*count)-1].login, sizeof(char), len, fp);
                fread(&len, sizeof(int), 1, fp);
                fread(rec[(*count)-1].pass, sizeof(char), len, fp);
                fread(&len, sizeof(int), 1, fp);
                fread(rec[(*count)-1].about, sizeof(char), len, fp);
                tmp = rec;
                rec = new Record[++(*count)];
                memcpy(rec, tmp, (*count)-1);
        }
        delete [] tmp;
        fclose(fp);
        return true;
}
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
        grid->Cells[0][0] = "Site";
        grid->Cells[1][0] = "Email";
        grid->Cells[2][0] = "Login";
        grid->Cells[3][0] = "Password";
        grid->Cells[4][0] = "About";
        //path = GetEnvironmentVariable("");
        if (Load(rec, &count, path))
        {
                grid->RowCount = count + 1;
                for(int i = 1; i < grid->RowCount; i++)
                {
                        grid->Cells[0][i] = rec[i-1].site;
                        grid->Cells[1][i] = rec[i-1].email;
                        grid->Cells[2][i] = rec[i-1].login;
                        grid->Cells[3][i] = rec[i-1].pass;
                        grid->Cells[4][i] = rec[i-1].about;
                }
        }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
        if ((grid->RowCount == 2) &&
            (grid->Cells[0][0] == "") &&
            (grid->Cells[1][0] == "") &&
            (grid->Cells[2][0] == "") &&
            (grid->Cells[3][0] == "") &&
            (grid->Cells[4][0] == "")) return;
        count = grid->RowCount - 1;
        rec = new Record[count];
        for (int i = 1; i < grid->RowCount; i++)
        {
                rec[i-1].site = grid->Cells[0][i].c_str();
                rec[i-1].email = grid->Cells[1][i].c_str();
                rec[i-1].login = grid->Cells[2][i].c_str();
                rec[i-1].pass = grid->Cells[3][i].c_str();
                rec[i-1].about = grid->Cells[4][i].c_str();
        }
        AnsiString msg = "Save error!";
        if (!Save(rec, &count, path))
                Application->MessageBox(msg.c_str(),
                Application->Title.c_str(),
                MB_OK | MB_ICONERROR);
}
//---------------------------------------------------------------------------
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
24.06.2014, 23:49
Лучший ответ Сообщение было отмечено GetHelp как решение

Решение

Так у тебя слева не char*, а char[500], это разные вещи... Копируй содержимое ячейки в этот массив через strcpy...
1
63 / 64 / 11
Регистрация: 27.02.2013
Сообщений: 1,116
25.06.2014, 00:05  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Так у тебя слева не char*, а char[500], это разные вещи... Копируй содержимое ячейки в этот массив через strcpy...
помогло а еще вопрос как из события формы Destroy выйти не закрывая форму? там просто при закрытии бд сохраняется и если не удалось сохранить выдает масагу что сохранение не удалось, а дальше надо дать юзверю возможность че то сделать...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 12
25.06.2014, 02:05
Сохраняй БД не по OnDestroy, а по OnCloseQuery, там еще можно отменить закрытие формы...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2014, 02:05
Помогаю со студенческими работами здесь

Настройки компилятора (Lvalue required)
Всех приветствую! Столкнулся с проблемой, много лет пишу на BCB6, но недавно решил попробовать Rad Studio XE (10.2) и как пример...

AnsiString to Char или Lvalue required
Добрый день, форумчане. Помогите разобраться, поскольку сам я нуб. Есть char m_sComPort и туда нужно вставить значение com-порта из...

char в complex<double>: Lvalue required
Здравствуйте. Пытаюсь перегнать массив формата char в complex&lt;double&gt; (работаю с библиотекой complex). char * massiv1 = new...

Lvalue required. Добавление строк в Memo - ввод книги, вывод книги по ID.
Вроде библиотечной программы. Ввод книги. Вывод книги по ID. #include &quot;Unit1.h&quot; ...

Ошибка "Lvalue required"
прикомпиляции вот этого кода выдается ошибка. Помогите пожалуйста её исправить. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru