Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Помогите новичку в C++

Автор: XCV81
Дата сообщения: 11.07.2011 16:18
Всем здрасте, решил я с делфи перейти на с++ билдер, сижу понемногу вникаю, но вот уперся в проблемку, даже гугл не помагает, или может не то ищу... Суть проблеммы:
Есть програмка написанная на с++, как сделать чтобы при запуске программы с параметром (например "мояпрога.ехе любоеслово" программа запускалась и в Label1 был текст "любоеслово"?
в делфи это делалось как-то так:
var slovo: string;
if ParamCount>0 then slovo:=ParamStr(0) ;
Label1.Caption:=(slovo);
как аналогичное сделать на с++?
Автор: akaGM
Дата сообщения: 11.07.2011 16:47
XCV81
во-первых, не

Цитата:
slovo:=ParamStr(0)

а

Цитата:
slovo:=ParamStr(1)


Цитата:
даже гугл не помагает

если гугль не помогает, это значит что ты хрен знает что ищешь...
в книгу бы для смеха заглянул...

Код: void main(int argc, char * argv[])
{
if (argc > 1) {
strcpy(Label1->Caption, argv[1]);
}
Автор: XCV81
Дата сообщения: 11.07.2011 16:57

Цитата:
во-первых,

это не столь важно, писал на скорую руку чтобы объяснить что хочу...

Цитата:
в книгу бы для смеха заглянул...

смотрел, и такой вариант нашел, но при попытке его применить в своей проге получаю:
 [BCC32 Error] Unit1.cpp(30): E2141 Declaration syntax error
 [BCC32 Error] Unit1.cpp(82): E2139 Declaration missing ;
 [BCC32 Error] Unit1.cpp(82): E2134 Compound statement missing }
вот и решил что чего-то не хватает, может подскажет кто как правильно это сделать (может инклюд какой дополнительный нужен... в общем в ступоре я пока)
ЗЫ: Если это важно то я использую C++Builder® XE Version 15.0.3953.35171
Автор: A1exSun
Дата сообщения: 11.07.2011 17:05

Код: if (argc > 1) strcpy(Label1->Caption, argv[1]);
Автор: akaGM
Дата сообщения: 11.07.2011 17:19

Цитата:
Declaration syntax error
Declaration missing ;


может всё-таки и не хватает этой самой "точки с запятой"?

а ошибка в синтаксисе может быть сто раз наведённой...
Автор: XCV81
Дата сообщения: 11.07.2011 17:23

Цитата:
Спрашивать нужно там

сори, не заметил ту тему, есле кто может перенесите обсуждение туда...
написал так:
void main(int argc, char * argv[]);
if (argc > 1) strcpy(Label1->Caption, argv[1]);
получаю ошибку:
 bcc32 command line for "Unit1.cpp"
 [BCC32 Error] Unit1.cpp(17): E2451 Undefined symbol 'argc'
 [BCC32 Error] Unit1.cpp(17): E2451 Undefined symbol 'argv'
Failed
если пишу так:
void main(int argc, char * argv[])
{
if (argc > 1) strcpy(Label1->Caption, argv[1]);
}
то получаю такую ошибку:
 bcc32 command line for "Unit1.cpp"
 [BCC32 Error] Unit1.cpp(17): E2141 Declaration syntax error
 [BCC32 Error] Unit1.cpp(22): E2451 Undefined symbol 'ini'
 [BCC32 Error] Unit1.cpp(49): E2158 Operand of 'delete' must be non-const pointer
 [BCC32 Warning] Unit1.cpp(58): W8004 'sek' is assigned a value that is never used
Failed
Автор: A1exSun
Дата сообщения: 11.07.2011 17:29

Цитата:
 [BCC32 Error] Unit1.cpp(17): E2451 Undefined symbol 'argc'
 [BCC32 Error] Unit1.cpp(17): E2451 Undefined symbol 'argv'

У тебя не написано что функция принимает параметры int argc, char * argv[]
Должно быть так:

Цитата:
void main(int argc, char * argv[])

Автор: XCV81
Дата сообщения: 11.07.2011 17:37

Цитата:
Должно быть так:

не вижу разницы с тем что написал выше....
да и проблемма походу не в этой строчке, попробовал сделать так:
void main(int argc, char * argv[]);
// if (argc > 1) strcpy(Label1->Caption, argv[1]); //закоментил эту строку
прога компилится без ошибок, если я правильно понимаю, то argc - кол-во параметров...
попробовал для проверки добавить строку
ShowMessage(argc);
думал увижу кол-во параметров, а получил ошибку:
 bcc32 command line for "Unit1.cpp"
 [BCC32 Error] Unit1.cpp(19): E2451 Undefined symbol 'argc'
Failed
Автор: akaGM
Дата сообщения: 11.07.2011 19:11
XCV81

Цитата:
void main(int argc, char * argv[]);

ты бы почитал всё-таки книжки по _основам_ С...

надо понимать разницу между _декларацией_ и _реализацией_ функции...
Автор: ZeUsM
Дата сообщения: 11.07.2011 19:49
void main(int argc, char * argv[])
{
if (argc > 1) {
strcpy(Label1->Caption, argv[1]);
}
}

Просто нужно, было блок закрыть, так тоже не работает?
Автор: A1exSun
Дата сообщения: 11.07.2011 21:00
ZeUsM
он этот кусок кода в свой пишет, получается функция в функции...
Автор: akaGM
Дата сообщения: 11.07.2011 21:19
тут уже и ни гугль и ни гейтс, и ни гнусь и ни билдер не помогут...
Автор: vlary
Дата сообщения: 11.07.2011 23:00
XCV81, akaGM

Цитата:
void main(int argc, char * argv[])
{
  if (argc > 1) {
  strcpy(Label1->Caption, argv[1]);
}
Неплохо бы определиться, какую программу вы пишете, консольную или приложение Виндовс.
Если консольное, то откуда здесь Label1->Caption?
Если для Виндовс, там должно быть
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
... и так далее.

Автор: akaGM
Дата сообщения: 11.07.2011 23:24
vlary
я?
никакую...
я тут пытался быть учебником по С
сдуру...

Страницы: 1

Предыдущая тема: Поиск в cxDBTreeList


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.