- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
function TMyDb.getUserItemsINTOMarkt(userid: Int64; marktid: String): SOString;
var
Query : TZQuery;
begin
Result := '';
try
lock;
Query := TZQuery.Create(nil);
if not isConnected() then
connect();
Query.Connection := SQLCon;
Query.SQL.TEXT:='SELECT mi.markt_id, mi.price, mi.item_id,ui.used_limit,'+
'ui.max_limit,ui.inv_id,ui.inv_min_damage, ui.inv_max_damage,'+
'ui.inv_options,ui.inv_bonuses,ui.inv_mods,ui.modifed,'+
'i.name FROM bkheroes.markt_items mi '+
'JOIN user_inventory ui ON mi.user_id='+IntToStr(userid)+' AND '+
'mi.user_inv_id=ui.inv_id AND mi.markt_id='''+marktid+
''' AND ui.userSellItem=''yes'' JOIN items i ON i.id=mi.item_id';
if SQLCon.Connected = True then
begin
Query.Open;
if Query.RecordCount > 0 then
begin
while not Query.EOF do
begin
Result := Result+'{"marktid":'+Query.FieldByName('markt_id').AsString+
',"inv_id":'+Query.FieldByName('inv_id').AsString+
',"price":'+Query.FieldByName('price').AsString+
',"itemid":'+Query.FieldByName('item_id').AsString+
',"used_limit":'+Query.FieldByName('used_limit').AsString+
',"max_limit":'+Query.FieldByName('max_limit').AsString+
',"min_damage":'+Query.FieldByName('inv_min_damage').AsString+
',"max_damage":'+Query.FieldByName('inv_max_damage').AsString+
',"options":'+explodeParams(query.FieldByName('inv_options').AsString,',',':').AsString+
',"bonuses":'+explodeParams(Query.FieldByName('inv_bonuses').AsString,',',':').AsString+
',"mods":'+explodeParams(Query.FieldByName('inv_mods').AsString,',',':').AsString+
',"modifed":"'+Query.FieldByName('modifed').AsString+
'","name":"'+Query.FieldByName('name').AsString+'"},';
query.Next;
end;
end;
Result:='{"marktid":'+marktid+',"items":['+Copy(Result,1,Length(Result)-1)+']}';
end;
TLogger.GeneralLog('getUserItemsINTOMarkt: '+Result,'TMyDBUnit',ltTrace);
finally
Query.Close;
Query.Free;
unlock;
end;
end;
О боже! Как можено такое писать за деньги? Да вообще, как можно писать такое??
pushistayapodmyshka 24.11.2014 19:19 # +1
Анонимус 24.11.2014 21:23 # +1
Зато без дурацких громоздских фреймворков и биндингов и MVVM которые сами строят формочки и заполняют их данными, затобез всяких ORM, правда?
Cynicrus 24.11.2014 21:46 # 0
Анонимус 24.11.2014 21:47 # 0
Хотя я согласен с тем, что и без фреймворка можно было так бойлерплейтово не писать
Cynicrus 24.11.2014 22:07 # 0
Анонимус 24.11.2014 22:12 # 0
GUI вообще писать без опыта сложно: начиная с деятельности в евентовом треде
Cynicrus 24.11.2014 22:14 # 0
Анонимус 24.11.2014 22:17 # 0
1) Взять framework который эту задачу решает, изучить его и пользоваться.
2) Написать кучу бойлерплейта слабоподдерживаемого, потом как-то его генерализировать и всё равно написать свой фреймворк.
Я за первый вариант.
А что бустом, QT, и чем угодно нуб может стрельнуть себе в ногу -- это понятно
Cynicrus 24.11.2014 22:22 # 0
И да, всё же задачу решает, тот кто код пишет, а не framework.
Анонимус 24.11.2014 22:27 # 0
Cynicrus 24.11.2014 22:33 # 0
Cynicrus 28.11.2014 09:13 # 0
defecate-plusplus 24.11.2014 22:32 # 0
Cynicrus 24.11.2014 23:36 # 0
defecate-plusplus 25.11.2014 00:01 # 0
учитывая, что это блять какая-то игра с дамагом и инвентарём...
на паскале...
какие деньги??
какой джейсон??
как вообще можно писать на паскале????
Анонимус 25.11.2014 00:06 # +1
но-но) Я азы ООП изучал по Borland Pascal:)
defecate-plusplus 25.11.2014 00:36 # +1
в дельфи уже завезли jackson.map.ObjectMapper?
Анонимус 25.11.2014 00:38 # 0
И я не уверен на счет рефлексии в паскале, а значит может быть с мапингом тоже беда
Cynicrus 25.11.2014 07:19 # 0
betking1 27.11.2014 15:35 # 0
Format(QuerySelectCountRes,[2013,2014]) в QuerySelectCountRes шаблон запроса 2013 и 2014 это подставки в отчет через %d
Cynicrus 28.11.2014 09:12 # 0
bormand 28.11.2014 09:22 # 0
betking1 29.11.2014 18:14 # 0
betking1 28.11.2014 18:58 # 0
"Ну Json формировать не анальным способом." что??
Cynicrus 29.11.2014 16:55 # 0
Dr_Sigmund 02.12.2014 02:19 # 0
Заполнение переменной Result, конечно, надо сделать циклом, а не строить эту жуть.
Запрос - параметризовать.
Ну а за конструкцию "if SQLCon.Connected = True then" надо, конечно, убивать. Потому что если не убивать за это, то за что же тогда убивать?