Problem s char* – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problem s char* – C / C++ – Fórum – Programujte.comProblem s char* – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Tom9k0
Newbie
2. 8. 2007   #1
-
0
-

Dobrý den,napsal jsem win program,ktery obsahuje tlacitko OK a EDITTEXT.Chtel jsem aby to fungovalo tak,ze kdyz napisete do toho EDITTEXTU "trance",tak se spusti davkovy program,ktery otevre slozku s mp3.Dal jsem tam radsi jeste zpravu,ktera zobrazi zadany text,kdyz zadate neco jineho (pro kontrolu).Ale mam tu problem s char *text,protoze kdyz mam tento kod:



case IDC_OK:
char *text; // Sestavime si novy text
text=(char*)GlobalAlloc(GMEM_FIXED|GMEM_ZEROINIT,65536);
SendDlgItemMessage(hwnd,IDC_EDIT,WM_GETTEXT,65535,(long)text);
if (text=="trance")
{
system("L:\\mp3.bat");
}
else
{
MessageBox(NULL,text,"...",MB_OK);
}

tak i kdyz zadam do vstupniho pole "trance",tak se nic nespusti a zobrazi se mi ta zprava,kde je "trance" napsano a to nechapu.Nevíte nekdo co je tam spatne?

Nahlásit jako SPAM
IP: ...–
Reklama
Reklama
Jura
~ Anonymní uživatel
634 příspěvků
2. 8. 2007   #2
-
0
-

Mno, víme. Takto se v C řetězce neporonávají. Na to je strcmp(strncmp,strcoll). A jen tak mimochodem, dealokuješ tu pameť? A proč alokuješ, tak moc?



char *text; // Sestavime si novy text - radeji TCHAR
text=(char*)GlobalAlloc(GMEM_FIXED|GMEM_ZEROINIT,65536); // podivne, ale...
if(text)
{
SendDlgItemMessage(hwnd,IDC_EDIT,WM_GETTEXT,65535,(long)text);
if (strcmp("trance", text) == 0)
{
system("L:\\mp3.bat");
}
else
{
MessageBox(NULL,text,"...",MB_OK);
}
GlobalFree(text);
}

Nahlásit jako SPAM
IP: ...–
Tom9k0
Newbie
2. 8. 2007   #3
-
0
-

Diky za pomoc,s tim alokovanim to nebyl muj napad,ale bylo to ve skriptu jedne lekce programovani pro windows.Bohuzel se objevil jeste jeden problem-kdyz mam uvnitr podminky if nejaky prikaz ktery pracuje se soubory,program se zasekne a nejde nic delat.Jinak treba system("pause") normalne funguje.

Nahlásit jako SPAM
IP: ...–
zacatecnik0
Super člen
2. 8. 2007   #4
-
0
-

muzete sem dat kod? nevim co to znamena naky prikaz :)

Nahlásit jako SPAM
IP: ...–
Můj blog http://www.zacatecnik.wu.cz[br]Překládám anglickou knihu o wxWidgets http://wxwidgets.hustej.net
Tom9k0
Newbie
2. 8. 2007   #5
-
0
-

Myslim ze ten kod moc nepomuze,ale...
soubor rsrc.rc:



#include <winresrc.h>
#include "resource.h"

IDD_DIALOG1 DIALOG DISCARDABLE 200, 200, 200, 50
BEGIN
PUSHBUTTON "OK",IDC_OK,120,25,80,10
CONTROL "(C) Tom9k 2001",IDC_STATIC,"Static",SS_SIMPLE | WS_DISABLED |
WS_GROUP,50,40,50,8
CONTROL "Enter the password:",IDC_STATIC,"Static",SS_SIMPLE |
WS_GROUP,0,0,100,8
EDITTEXT IDC_EDIT,20,25,99,10
END

soubor resource.h:
#define IDD_DIALOG1             101

#define IDC_OK 1000
#define IDC_EDIT 323
#define IDC_STATIC -1

a main.cpp:
#include <windows.h>

#include <string.h>
#include <stdio.h>
#include "resource.h"
BOOL CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int STDCALL
WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,WndProc);
return(0);
}
BOOL CALLBACK WndProc(HWND hwnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
switch(Message){
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_OK:
char *text; // Sestavime si novy text - radeji TCHAR
text=(char*)GlobalAlloc(GMEM_FIXED|GMEM_ZEROINIT,65536); // podivne, ale...
if(text)
{
SendDlgItemMessage(hwnd,IDC_EDIT,WM_GETTEXT,65535,(long)text);
if (strcmp("trance", text) == 0)
{
system("L:\\mp3.bat");
}
else
{
MessageBox(NULL,text,"...",MB_OK);
}
GlobalFree(text);
}
}
break;
default: return FALSE;
}
return TRUE;
}

jo a tim "nejaky prikaz" jsem myslel cokoli,co pracuje s nejakymi soubory,napr: system("L://mp3.bat") nebo system("start neco.exe") nebo treba
FILE *soubor;

soubor=fopen("C:\\nevim.txt","r");

Proste nefunguje nic podobneho,kdyz se k tomu prikazu program dostane,zamrzne.

Nahlásit jako SPAM
IP: ...–
Jura
~ Anonymní uživatel
634 příspěvků
2. 8. 2007   #6
-
0
-

Nevím, jestli je to překlep, ale ty lomítka mají být obráceně;)

Nahlásit jako SPAM
IP: ...–
Tom9k0
Newbie
3. 8. 2007   #7
-
0
-

To Jura:Jo to byl preklep,omlouvam se.Nevis teda proc to nefacha?

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 86 hostů

Podobná vlákna

Problém s "char" — založil Michal

Problem s char-om — založil entity

CHAR — založil Jeyekomon

Char vo for — založil Rastislav Cupa

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý