Вверх ↑
Этот топик читают: Гость
Ответов: 1925
Рейтинг: 172
#1: 2017-10-09 09:05:32 ЛС | профиль | цитата

Add(MainForm,5288074,175,98)
{
Width=602
Height=442
Position=1
Point(onClose)
link(onCreate,8338772:doEvent1,[])
link(onClose,1881949:In,[])
}
Add(dbMySQL,5131964,350,112)
{
Host=""
Charset=5
link(onError,5475050:doMessage,[])
}
Add(Hub,8338772,273,112)
{
OutCount=3
link(onEvent1,5131964:doOpen,[])
link(onEvent2,5131964:doSelectDB,[(319,125)(319,132)])
link(onEvent3,11186687:doQuery,[(303,132)(303,230)])
}
Add(LineBreak,14093802,308,119)
{
link(Out,5131964:doClose,[])
Primary=[1881949,-91,0]
}
Add(Message,5475050,399,112)
{
Caption="Ошибка"
}
Add(dbMySQL_Query,11186687,350,224)
{
link(onResult,2734340:In,[])
link(dbHandle,5131964:dbHandle,[])
link(QueryText,4145845:Text,[])
}
Add(VisualStrings,4145845,357,161)
{
Lines=#33:SELECT post_content FROM wp_posts|24:WHERE post_type = 'post'|11:LIMIT 0, 10|
Width=220
Height=44
}
Add(Charset,11491527,399,504)
{
Type=7
link(onCharset,16028844:doText,[])
}
Add(LineBreak,6702639,98,406)
{
link(Out,1960739:doOperation,[])
Primary=[2734340,294,-182]
}
Add(ToolBar,14159519,112,301)
{
Width=594
Height=30
Align=2
Caption=0
Flat=1
Buttons=['Следующая'=[ZIP3605000078DA73F235636600033320D600620128666490804800E585B8211806FE5303AC5BB776C58A15F7EEDD2346F1837B77B664A935FB49D7D7D5DEB97387182DDF67B8BE6850EE0F9169696E2246CBF3CB075F4F727CD1A8D21724D5DBDD458C96A7E776BD9BECF8A655B33F58BA15C3966BD7AE1D3972E4201238B07FEFA935139EB6E9BF6ED79E102C5B575B0DF7FEDD3B7726E5F9CE4AD69F96A0373D517F5AA2FECC24FDC9F17A7392756F35E93FEF3078D5A137314476D2C47E88FA3B974FFF9EEFF57765D4EF65E1BF964500D1CFA5E1BF97477C5F1CFCA2C7E269A7D1934E93D713AC1BB3C3E0EE39BDBA6FEFF49283338A8FCD2939361B888A8FCC2ADAD39B7CABD3E6458FD9AB195EC7EAEDCF9C3A81C7BFD7AF5F5FD35FF2A8D3F8ED5CFFA335E6E74E1350BC6E42D9CB7EABF7F3838ED5989F3971147F606E9854F66282D5EB05A1271AEDCFE3351914F20FEF7E9C1FF07649CC8966E773278F12931E9E2CCF3DDE1170E1F471CA932EFFF33F0C86DCDC0CDFED1D189EF29A307CDC53C7F0797E378358C40A8615CBFC19667ECA645873408541D8C787E1E17B3B865F35DD0C25679C197EDEDBCD206B6DC7B071F94B868D9FCC18028D3D193E0AC630B82AD831C827C8337CF07DC290D7EFC490F6F807C3BCD94B195A5466322407A533FC610E6350D8A9C2C0BCD687C1C46A02C3594F3D06F6962E8616131306CFC41D0C8E99260C6FFE1B32742AAE65F0293BC76063FC82A18EA78541A2A391E132A711835FF11C8656567686449E0B0C93C3B819E63427336C5993C0A0AAA6CD7049B999C1B2F11883C2390D06831B8D0C0ADFBF307C7D32876191AF2AC396D25A86AD66B20C8BD5AF323CE67AC8B040348461D9B30E6829C058521AC180040A8B8AC38591F8B979F90589E9087E466656764EA2029CCF9E949C929A06511119151525151D131B179F900834C3D7CF3F00080283824342C3C2236CEDEC1D1C9D9C5D5CDDDC3D3CBDBC7D98F40D0C8D8C8D4D4CCDCC2D2CADAC6D18141495945554D5D43534B5B47574F5A016488948CBC8CAC9B343B9C222A262E21292302E032F1FBF80A0109CCBC0C1C9C5CD83E03230B3B0B2B1237B90919109C20000639BFF29],'Предыдущая'=[ZIP3603000078DA73F235636600033320D600620128666490804800E585B8211806FE530CEEDDBBB762C58A75EBD612A3F8CE9D3BF575B5CD7ED25BB2D41EDCBB4350714B73537F88CC8B06E5EF335C092AEEEDEEEA0B927AD1A8F27A92E3F3CB07F12B6E059A1C2CFDA655F3DD64C7A7E776E1F7605D6DF58460D9D7EDDA4FDBF44FAD997060FFDE8348E0C89123D7AE5D83AB9F34B17F6288ECAB0EBDE71D06B79AF4E724EB4E8ED79B99A43F2D517F7AA2FEB404BD59C9FA93F27CEFDE817ABF313BECF504EB279D264F3B8D5EF4587C5F1CFC7B79C4CFA5E1BF964500D1EF65E17F5746FD9EEF75E7F26988FA33A74E1CABB77F35C3EB458FD9AD4E9B3DBDC94766151D9B5D7C6C76C9B13925076714EF9D5E727A751FB217CE9D3E71B4C6FCED5CFF479DC66BFA4BAE5FBF4E30A6CE9C387AACC6FCFDFCA097FD56EB269411A3E5FCE913271AED5F2F087D31C16AC3A43262D2C3B993474F343BBF5D12F3717EC0D3877789D172E1F4F1E31D014F96E7FEA7060000518585CA]]
link(onClick,16141290:doEvent,[])
}
Add(IndexToChanel,16141290,168,301)
{
Count=4
link(onEvent1,7185244:doNext,[(216,307)(216,398)])
link(onEvent2,7185244:doPrev,[(216,314)(216,405)])
}
Add(Memo,16028844,490,483)
{
Top=30
Width=594
Height=384
Align=5
ScrollBars=2
}
Add(CounterEx,7185244,231,392)
{
Default=-1
Point(doPrev)
Point(doMax)
link(onNext,6070591:doEvent1,[])
}
Add(LineBreak,4647548,364,287)
{
Caption="rows"
Type=1
link(Data,11688551:Var2,[])
Primary=[12940132,-224,91]
}
Add(LineBreak,5678788,133,98)
{
link(Out,5288074:doCaption,[])
Primary=[7225616,364,294]
}
Add(Hub,6070591,280,392)
{
link(onEvent1,1735688:doString,[])
link(onEvent2,3841188:doRead,[(322,405)(322,510)])
}
Add(MatrixRW,3841188,350,504)
{
link(onRead,11491527:doCharset,[])
link(Matrix,11186687:Rows,[])
link(X,10753987:Value,[])
}
Add(Memory,10753987,364,462)
{
Default=Integer(0)
}
Add(Math,1960739,140,406)
{
OpType=1
Op2=1
ResultType=0
link(onResult,7185244:doMax,[])
link(Op1,12940132:Var,[])
}
Add(FormatStr,1735688,448,392)
{
Mask="%1 из %2"
link(onFString,7225616:In,[])
link(Str1,3175349:Var,[])
link(Str2,11688551:Var3,[(461,271)])
}
Add(GetDataEx,11688551,364,266)
{
link(Data,11186687:RCount,[])
}
Add(LineBreak,10552831,231,434)
{
Type=1
link(Data,7185244:Count,[])
Primary=[3175349,217,-70]
}

Это код получения постов из БД для Wordpress. Для проверки подставьте свои host/login/pass.

Когда первый раз жму кнопку "Следующая", нулевая строка читается нормально.
Нажимаю второй раз, перехожу к 1-й строке - всё нормально.
А вот когда после этого нажимаю "предыдущая" - зависает.

То же самое происходит, если после получения данных из БД сначала нажать "предыдущая" пару раз, а потом кнопкой "следующая" вернуться к нулевой строке.

Проблема - function THIdbMySQL_Query.MGet; из HIdbMySQL_Query.pas

          if y ‹ oldy then
begin
Ms.FindFirst;
oldy := 0;
end;
repeat
Ms.FindNext;
inc(oldy);
until y = oldy;

Получается, если запрашиваемая строка меньше текущей, oldy сбрасывается в 0, а потом в цикле repeat сразу увеличивается на 1. И если y=0, то в этом цикле oldy и y никогда не сравняются.

Нужно просто заменить цикл repeat на while:

while oldy ‹ y do  begin Ms.FindNext; inc(oldy); end;
Тогда до проверки y увеличения oldy не будет, и всё работает правильно.

nesco, прошу обратить внимание и обновить на SVN.
карма: 9
0
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26066
Рейтинг: 2120
#2: 2017-10-09 14:40:13 ЛС | профиль | цитата
3042 писал(а):
nesco, прошу обратить внимание и обновить на SVN

Прошу обратить внимание, что желательно выкладывать весь код компонента с исправлениями.
карма: 22

0
Ответов: 1925
Рейтинг: 172
#3: 2017-10-09 15:24:53 ЛС | профиль | цитата
nesco, прикрепил, а то форум угловые скобки заменяет какими-то невалидными символами. Внутри как-то указывать место поправки надо? И как?
карма: 9
0
файлы: 1hidbMySQL_Query.rar [1KB] [393]
Разработчик
Ответов: 26066
Рейтинг: 2120
#4: 2017-10-09 15:33:14 ЛС | профиль | цитата
3042 писал(а):
Внутри как-то указывать место поправки надо? И как?

Желательно. Ставишь ремарки на старый код, а новый помечаешь датой исправления и ником. Что-то типа такого


         if y ‹ oldy then
begin
Ms.FindFirst;
oldy := 0;
end;
// repeat
// Ms.FindNext;
// inc(oldy);
// until y = oldy;

// ------------ Исправил 3042 09.10.2017 ------------

while oldy ‹ y do begin Ms.FindNext; inc(oldy); end;
карма: 22

0
Ответов: 1925
Рейтинг: 172
#5: 2017-10-09 19:00:50 ЛС | профиль | цитата
ОК. Будем ждать обновления.
карма: 9
0
файлы: 1hidbMySQL_Query1.rar [1.1KB] [438]
Разработчик
Ответов: 26066
Рейтинг: 2120
#6: 2017-10-09 19:15:21 ЛС | профиль | цитата
Обновил
карма: 22

0
Ответов: 1925
Рейтинг: 172
#7: 2017-10-09 19:56:10 ЛС | профиль | цитата
Благодарю.
карма: 9
0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)