PDA

Просмотр полной версии : [Вопрос] Длинная строка



Vano_Glad
05.02.2016, 08:07
Всем привет. Столкнулся с такой проблемой:


static const fmt_str[] = "\
Landstalker (400)\nBravura (401)\nBuffalo (402)\nLinerunner (403)\nPerenniel (404)\nSentinel (405)\nDumper (406)\nFiretruck (407)\nTrashmaster (408)\nStretch (409)\nManana (410)\nInfernus (411)\nVoodoo (412)\nPony (413)\nMule (414)\nCheetah (415)\nAmbulance (416)\nLeviathan (417)\nMoonbeam (418)\nEsperanto (419)\nTaxi (420)\nWashington (421)\nBobcat (422)\nMr Whoopee (423)\nBF Injection (424)\nHunter (425)\nPremier (426)\nEnforcer (427)\
\nSecuricar (428)\nBanshee (429)\nPredator (430)\nBus (431)\nRhino (432)\nBarracks (433)\nHotknife (434)\nArticle Trailer (435)\nPrevion (436)\nCoach (437)\nCabbie (438)\nStallion (439)\nRumpo (440)\nRC Bandit (441)\nRomero (442)\nPacker (443)\nMonster (444)\nAdmiral (445)\nSquallo (446)\nSeasparrow (447)\nPizzaboy (448)\nTram (449)\nArticle Trailer 2 (450)\nTurismo (451)\nSpeeder (452)\nReefer (453)\nTropic (454)\nFlatbed (455)\nYankee (456)\
\nTopfun Van (Berkley's RC) (459)\nSkimmer (460)\nPCJ-600 (461)\nFaggio (462)\nFreeway (463)\nRC Baron (464)\nRC Raider (465)\nGlendale (466)\nOceanic (467)\nSanchez (468)\nSparrow (469)\nPatriot (470)\nQuad (471)\nCoastguard (472)\nDinghy (473)\nHermes (474)\nSabre (475)\nRustler (476)\nZR-350 (477)\nWalton (478)\nRegina (479)\nComet (480)\nBMX (481)\nBurrito (482)\nCamper (483)\nMarquis (484)\nBaggage (485)\nDozer (486)\nMaverick (487)\
\nCabby (457)\nSolair (458)\nSAN News Maverick (488)\nRancher (489)\nFBI Rancher (490)\nVirgo (491)\nGreenwood (492)\nJetmax (493)\nHotring Racer (494)\nSandking (495)\nBlista Compact (496)\nPolice Maverick (497)\nBoxville (498)\nBenson (499)\nMesa (500)\nRC Goblin (501)\nHotring Racer (502)\nHotring Racer (503)\nBloodring Banger (504)\nRancher (505)\nSuper GT (506)\nElegant (507)\nJourney (508)\nBike (509)\nMountain Bike (510)\nBeagle (511)\
\nCropduster (512)\nStuntplane (513)\nTanker (514)\nRoadtrain (515)\nNebula (516)\nMajestic (517)\nBuccaneer (518)\nShamal (519)\nHydra (520)\nFCR-900 (521)\nNRG-500 (522)\nHPV1000 (523)\nCement Truck (524)\nTowtruck (525)\nFortune (526)\nCadrona (527)\nFBI Truck (528)\nWillard (529)\nForklift (530)\nTractor (531)\nCombine Harvester (532)\nFeltzer (533)\nRemington (534)\nSlamvan (535)\nBlade (536)\nFreight (Train) (537)\nBrownstreak (Train) (538)\
\nVortex (539)\nVincent (540)\nBullet (541)\nClover (542)\nSadler (543)\nFiretruck LA (544)\nHustler (545)\nIntruder (546)\nPrimo (547)\nCargobob (548)\nTampa (549)\nSunrise (550)\nMerit (551)\nUtility Van (552)\nNevada (553)\nYosemite (554)\nWindsor (555)\nMonster 'A' (556)\nMonster 'B' (557)\nUranus (558)\nJester (559)\nSultan (560)\nStratum (561)\nElegy (562)\nRaindance (563)\nRC Tiger (564)\nFlash (565)\nTahoma (566)\nSavanna (567)\nBandito (568)\
\nFreight Flat Trailer (Train) (569\nStreak Trailer (Train) (570)\nKart (571)\nMower (572)\nDune (573)\nSweeper (574)\nBroadway (575)\nTornado (576)\nAT400 (577)\nDFT-30 (578)\nHuntley (579)\nStafford (580)\nBF-400 (581)\nNewsvan (582)\nTug (583)\nPetrol Trailer (584)\nEmperor (585)\nWayfarer (586)\nEuros (587)\nHotdog (588)\nClub (589)\nFreight Box Trailer (Train) (590)\nArticle Trailer 3 (591)\nAndromada (592)\nDodo (593)\nRC Cam (594)\nLaunch (595)\
\nPolice Car (LSPD) (596)\nPolice Car (SFPD) (597)\nPolice Car (LVPD) (598)\nPolice Ranger (599)\nPicador (600)\nS.W.A.T. (601)\nAlpha (602)\nPhoenix (603)\nGlendale Shit (604)\nSadler Shit (605)\nBaggage Trailer 'A' (606)\nBaggage Trailer 'B' (607)\nTug Stairs Trailer (608)\nBoxville (609)\nFarm Trailer (610)\nUtility Trailer (611)";
new string[sizeof(fmt_str)];
format(string, sizeof(string), fmt_str);
SPD(playerid, 39, DSL, "Создание транспорта", string, "Выбрать" ,"Выход");

Данный код не компилируется. Выдает ошибку на слишком длинную строку. Пытался преобразовать данную конструкцию по разному, но тщетно. Кто-нибудь знает выход из этой ситуации?

Salvacore
05.02.2016, 08:12
В 0.3x ввели классную тему, проверь.
http://cmd.3dn.ru/screens/vmenu.png

VVWVV
05.02.2016, 08:14
http://pro-pawn.ru/showthread.php?10012&p=47838&viewfull=1#post47838

Vano_Glad
05.02.2016, 08:27
Спасибо. тема закрыта

Vano_Glad
05.02.2016, 09:04
Хотя нет, не закрыта. Решил сделать тест:


new fmt_str[] = "test1";
new fmt_str_2[] = "\ntest2";
fmt_str[sizeof(fmt_str)-1] = '\n';
fmt_str_2[sizeof(fmt_str_2)-1] = '\0';
SPD(playerid, 0, DSL, "test", fmt_str, "Кнопка1" ,"Кнопка2");

В итоге ничего не заработало. Перечитал все посты с той темы. Сделал все так, или может я невнимательный. В итоге данная конструкция не скрепляет строки, а выводит только первое значение

Daniel_Cortez
05.02.2016, 15:39
Просто сделайте всё так, как уже показано по ссылке выше, и не придумывайте никаких локальных переменных и прочей отсебятины.

Vano_Glad
05.02.2016, 15:54
Просто сделайте всё так, как уже показано по ссылке выше, и не придумывайте никаких локальных переменных и прочей отсебятины.

Можешь просто объяснить, почему не работает данная конструкция на локальных переменных? Я же должен из всей это ситуации хоть что-то вынести

Profyan
05.02.2016, 16:11
Можешь просто объяснить, почему не работает данная конструкция на локальных переменных? Я же должен из всей это ситуации хоть что-то вынести


В секции данных эти строки располагаются непосредственно друг за другом
Про стек ничего не было сказано.

Vano_Glad
05.02.2016, 16:17
Про стек ничего не было сказано.

Всем спасибо за ответы. Daniel_Cortez - Все сработало

Vano_Glad
07.02.2016, 14:20
Снова всем привет. Остался еще 1 вопрос по данной теме: Как скомбинировать две переменные, в которых находится текст, который нужно форматировать?

Например:


new fmt_str_test[] =
{
"Очень большой текст...\n\
Имя: %s"
};
new fmt_str_test_2[] =
{
"Очень большой текст...\n\
Уровень: %d"
};

stock Test(playerid)
{
fmt_str_test[sizeof(fmt_str_test)-1] = '\n';
fmt_str_test_2[sizeof(fmt_str_test_2)-1] = '\0';
SPD(playerid, 0, DSM, "Test", fmt_str_test, "Кнопка 1", "Кнопка");
} // в данном случае мы выводим просто текст, и скреплеваем его. Но как мне отформатировать правильно два этих символа: %d и %s?

Пробовал подставить грамотно формат как-то. Не получается в итоге. Есть ли способ?

$continue$
07.02.2016, 14:40
Например, так?

http://i.imgur.com/gFcAAZq.png

Результат:

http://i.imgur.com/JiSNHEk.png

Vano_Glad
07.02.2016, 15:48
Спасибо. Проблема теперь такая, над которой я тоже никак сообразить не могу.


fmt_str_player_stat[sizeof(fmt_str_player_stat)-1] = '\n';
fmt_str_player_stat_2[sizeof(fmt_str_player_stat_2)-1] = '\0';
new string[sizeof(fmt_str_player_stat)];

Выходит то, что он подсчитывает длину только из fmt_str_player_stat. Как же быть, чтобы он подсчитывал длину с обеих вместе взятых?

$continue$
07.02.2016, 15:56
Разве, что:


const SIZE = sizeof(fmt_str_test) + sizeof(fmt_str_test_1);

Может быть, что то DC предложит...

Vano_Glad
08.02.2016, 06:21
$continue$

Спасибо за инициативу. Она помогла. Вышел из положения следующим образом:
new string[sizeof(fmt_str_player_stat) + sizeof(fmt_str_player_stat_2)];

Тема снова закрыта

Daniel_Cortez
08.02.2016, 08:34
$continue$

Спасибо за инициативу. Она помогла. Вышел из положения следующим образом:
new string[sizeof(fmt_str_player_stat) + sizeof(fmt_str_player_stat_2)];

Тема снова закрыта
Ещё не закрыта.
http://pro-pawn.ru/showthread.php?13388

Vano_Glad
08.02.2016, 09:58
Ещё не закрыта.
http://pro-pawn.ru/showthread.php?13388

Все что описано в статье мне уже известно :) Может я что-то не так понял, но я же правильно все сделал с данным примером?

new string[sizeof(fmt_str_player_stat) + sizeof(fmt_str_player_stat_2)];

Не будем принимать во внимание подробности, типо: +2-5 и т.д