BC++ 5.0 alól szeretnék procedurát hívni. A procedurában kurzort használok, ha a feldolgozandó adatmennyiség amin végig fetchelek nagyobb mint 50-60000 a progim elszáll general sql error-ral. Mi lehet a hiba, hogy tudom megoodani?
BC++ alatt szeretnék Crystal reportot használni. Van erre lehetőségem, vagy hiába túrom a netet? Ha nem megy tudnátok ajánlani olyan riportgenerálót, ami használható VC++, és BC++ alatt is.
Hogyan tudnám a logikai mezőt, ami alapértelmezésben true/false értéket jelez ki, igen/nem-ként megjeleníteni (gridben, reportban)?
Találtam egy DisplayValues -t, de valamit rosszul csinálok.
Use DisplayValues to specify strings you want used to represent Boolean values. Use any pair of phrases, separated by a semicolon. For example, to have the true and false values correspond to the letters T and F, respectively, set DisplayValues to
Table1LogicalField->DisplayValues = "T;F";
Ha azt írom be a programba, hogy tabla->FieldByName("mezonev")->DisplayValues = "igen;nem"; akkor a fordító azt üzeni vissza, hogy a DisplayValues nem tagja TFieldnek. Ez igaz is. Mert csak a TBooleanField-nek a tulajdonsága. De hogyan lesz az én paradox logikai mezőmből ilyen?
"Extrém gonosz felhasználó úgy veri át a programot, hogy a számla kinyomtatása után azt hazudja hogy sikertelen volt a nyomtatás..."
Tévedés. A mostani előírások szerint a program nem kérdezheti meg a felhasználót, hogy sikeres volt-e a nyomtatás. Ha elsőre nem sikerül kinyomtatni, úgy az már sztornó... Ez így majdnem szó szerint le van írva a törvényben: "Amennyiben a számla nyomtatása közben beragad a papír, kifogy a festékszalag, stb-stb., a számlát le kell sztornózni"
Extrém gonosz felhasználó úgy veri át a programot, hogy a számla kinyomtatása után azt hazudja hogy sikertelen volt a nyomtatás... alapvetően három, egymásnak ellentmondó követelményt kellene teljesíteni: 1. nem ismétlődhetnek a számlaszámok, 2. folyamatosaknak kellene lenniük, 3. a felhasználó rosszhiszeműségét kell feltételezni
Nem igazán bilderes téma, csak én is ezt használom időnként. Tehát: az APEH előírásai szerint a kinyomtatott számlán a számlaszám ismételhetetlen kell legyen, a felhasználó nem módosíthatja. Ti hogyan akadályoznátok meg? Egy táblába tárolt számlaszám, ami a _programból_ nem elérhető elég? Vagy fel kell készülni advanced-ebb userekre is, akik az adott adatbáziskezelőn le tudnak kérdezni/módosítani adatokat?
Hasznald az Image-hez kapcsolodo TBitmap objektum ScanLine[x] operatorat. Ez az x-edik sor kezdocimet adja vissza (Byte *, ami unsigned char *-nak fele meg), a sor tovabbi pixelei ettol a cimtol indulnak - a te esetedben (256 szinu kepek) bajtonkent megy a dolog. Ez pontosan a pixelek kozvetlen eleresere szolgal.
A sorok kezdocimei kozotti tavolsag nem feltetlenul egyenlo a kep szelessegevel, mert a Windows 4 bajtra igazitja a sorok hosszat - a ScanLine ezt korrektul kezeli. Az elso sor alapjan kepzett cim tehat nem feltetlenul egy folyamatos leirasat adja egy ketdimenzios matrixnak (pixelek).
Windows-ban vagy DOS-ban kellene? Ha az előbbi, akkor keresd meg a HELP-ben a WinExec-et vagy a CreateProcess-t, ha az utóbbi akkor a spawn-t. Note: Nem utasítás és nem parancs, hanem függény a neve!
Szeretnék egy programot meghívni, c++ ból. Nem adok át neki paramétert, nem kapok tőle vissza semmilyen értéket, csak azt akarom, hogy a progrmaom egy bizonyos pontján lefusson. Ehhez ugye az exec utasítást kell használnom? Hogyan kell meghívni?
Bocs, hogy zavarok, de volna egy kérdésem. Most kezdek Builderben programozni. A célom képfeldolgozó algoritmusok (szürkeárnyalatos) lennének, és már sikeresen jelenítek meg a képernyőn képeket. A képfeldolgozáshoz szükséges lenne az, hogy a képek pixeleinek értékét egy mátrixban elérjem. Tehát az Image objektumból hogyan tudom egy n*m-es mátrixba konvertálni a pixelek szürkeárnyalatos értékét? (Alternatív megoldásként írtam egy saját beolvasó függvényt, ami a merevlemezről olvassa újra a pixelek értékeit, de ez nem a legelegánsabb megoldás. )
A válaszokat előre is köszönöm.
Bocs, most látom, hogy tényleg elirtam. Nem kettőspontot akartam írni, hanem pontosvesszőt. CSV=pontosvesszővel elválasztott értékek. (Bár szó szerint a comma csak vesszőt jelent)
A comma valóban vesszőt jelent és a .csv fájlokban a nevével ellentétben mégis pontosvesszőket használnak. Ha valaki érti hogy hogy van ez, akkor várom válaszát.
Azért egy kicsit kavarognak itt az írásjelek;) : colon kettőspont , comma vessző (angol Excel-hez) ; semicolon vesszőspont/pontosvessző (magyar Excel-hez)
Javaslom, hogy hozz létre egy sztringtömböt és abba pakold át. Az alábbi kis példa pl egy háromoszlopos StringGrid adatait menti el kettősponttal elválasztva: (Szerintem hasonlóképpen dbgridre is meg lehet csinálni) Egyébként ha az adatokat kettősponttal választod el és .csv kiterjesztést adsz a fájlnak, akkor azt az excel simán beolvassa. CSV=Comma Separated Values (kettősponttal elválasztott értékek)
AnsiString s; TStringList *TempList = new TStringList; int i;
Segítséget szeretnék kérni, a helyzet a következő:
dbgird -ben van egy csomó mezőm adatokkal, ezeket szeretném szöveges formátumba pakolni, mondjuk listboxba ;-vel elválasztva. Szerintetek mi a legjobb megoldás. (átpakoltam mezőnként dbeditekbe, és onnan át a listboxba, de csak van valami közvetlen megoldás is...) Előre is thx!!!
Jelenleg melyik ebből a legújabb verzió? Volt szerencsém a CBuilder X-hez, de ez vmi tiszta Visual Studio koppintás, nekem az 5.0 után teljesen furcsa volt a felépítése. Az egész 1 ablak, az 5.0-ban több kicsiből állt össze. Felül sok egyéb mellett a controlok, formok "shortcut"jai, balra az object viewer, itt meg az egész 1 ablak, sehol semmi vizuális elem amiből építkezni kéne, valahogy nem borlandos, inkább ms visual studio. Ez mióta divat a Borlandnál? Vagy ez az X vmi különc próbálkozás, és a "hagyományos" CBuilder is fut még külön termékként?
Szerintem a 9600-at nem feltétlen kell módosítani, viszont a dcb méretét nem ártana beállítani: dcb.DCBlength = sizeof(DCB); Egyébként jónak tunik a progi, csak még kilépéskor CloseHandle-val le kell zárni a portot.
WriteFile (hCom, // Port handle &Byte, // Pointer to the data to write 1, // Number of bytes to write &dwNumBytesWritten, // Pointer to the number of bytes // written NULL // Must be NULL for Windows CE ); } //---------------------------------------------------------------------------
hCom = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, /* comm devices must be opened w/exclusive-access */ NULL, /* no security attrs */ OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */ 0, /* not overlapped I/O */ NULL /* hTemplate must be NULL for comm devices */ );
"A kerdesem az lenne hogyan tudok soros portra (rs232/rs484) karaktert kikuldeni"
Rákattintasz a BC++ Builder helpjében a Windows SDK - ra, és ott részletesen le van írva, hogy hogyan lehet a soros portot programozni. Röviden: Először a CreateFile-vel meg kell nyitnod a soros portot, utána tudod használni a ReadFile es WriteFile -t, amelyekkel lehet adatokat venni illetve küldeni. A SetCommState-vel lehet beállítani a DCB stuktúrát, amely a soros port beállításait tartalmazza, mint pl. paritás, baudrate, stopbitek stb. A végén pedig CloseHandle-val be kell csukni a megnyitott portot.
Igazából szinte semmi különbség sincs a Borland Delphi és a Borland C++ Builder között. A Delphi a pascal nyelvre épül a Builder pedig a C-re. Úgy is mondhatnám hogy a C++ Builder a Delphi ikertestvére. Én a C++ Bulidert használom, a kapcsos zárójelek valahogy jobban bejönnek nálam mint a sok begin-end.
Segitseget szeretnek kerni C++ BUILDER 6 -ban. A kerdesem az lenne hogyan tudok soros portra (rs232/rs484) karaktert kikuldeni, pl.: akkor ha egy adott gombot a grafikus kepernyon lenyomok.
Kisebb rendszerek fejlesztéséhez keresek fejlesztő eszközt. Eddigi pályafutásom során főleg Oracle eszközökkel dolgoztam, de az elég drága bizonyos piaci segmensek számára. Kellene egy olcsóbb megoldás. MS VC++-t már próbáltam, de az "nem jött be" túlságosan (nem a C++ része miatt). Vagy a Borland Delphi vagy pedig a Borland C++ Builder jöhet szóba. A cél az egyszerű és gyors fejlesztés mellett az lenne, hogy:
- alkalmas legyen triggerek kezelésére (eseménykezelő legyen benne),
- 4GL típusú fejlesztő legyen (szerintem ilyen)
- és ODBC-n keresztül lehessen távoli adatbázisokhoz kapcsolódni.
Nagyon fontos kérdés a riportok (nyomtatott listák) készítésének lehetősége. A Borland eszközöknél ezt hogyan lehet megoldani. Ha jól emlékszem, akkor az MS VC++ mellé kellett volna venni egy Crystal Report nevű eszközt, ami nem teszett túlságosan.
Mit ajánlantátok? Delphi-t vagy a C++ Buildert? Árban egyformák, szerintem tudásban is, de nem tudom.