Nie ma to nic wspólnego z twoim problemem, ale uważam, że powinieneś ponownie przejrzeć swoją funkcję CloseMarketOrders (), ponieważ logicznie ... Nie sądzę, że to zadziała. Pamiętaj, że indeks pozycji transakcji w Twojej puli handlowej jest bardzo podobny do indeksu tablicowego z pierwszą pozycją zaczynającą się od 0, powiedzmy, że masz 10 zamówień. ich indeks pozycji będzie wynosił od 0 do 9. OrdersTotal () daje ci liczbę 10, ponieważ w Twojej puli handlowej jest 10 transakcji. Ale jeśli wyrzucisz tę liczbę prosto do OrderSelect, to powie Ci, że nie ma takiej kolejności ani szyku z umówionego wyjątku. Nawet jeśli nie jest to szansa, trwa, masz na to czas (cntgt; 0). oznacza to, że jeśli jest tylko jedno zamówienie lub zostało mu 1 zamówienie, które znajduje się na pozycji 0, nie zostanie ono przetworzone. ponieważ nie pasuje do twojego stanu. więc ... zasadę, jeśli chodzi o zapętlenie do tyłu, użyj ich zamiast tego. Wstawiony kod cnt = OrdersTotal () - 1; while (cnt gt; = 0) {//bla bla bla ... cnt--; } alternatywnie możesz po prostu użyć pętli for, co wolisz. Wstawiony kod int numberOfOrders = OrdersTotal (); if (numberOfders gt; 0) {for (int cnt = numberOfOrders-1; cnt gt; = 0; cnt--) {//blah blah blah ...}} regards, Zen