Вверх ↑
Этот топик читают: Гость
Ответов: 1287
Рейтинг: 85
#391: 2017-12-03 02:00:35 ЛС | профиль | цитата
andrestudio, заработала - и слава богу!
Ты вот что, сер Антонио, я тут консоль задумал сделать, предлагаю покумекать.
Не всё просто, как кажется.То есть не просто консоль - кучу вариантов сегодня сделал, а надо, чтобы скрипт из приложения запускаешь, а работает в консоли твоего окна.
Короче потом сформулирую, а то уже ругаются на меня домашние.

Редактировалось 1 раз(а), последний 2017-12-03 02:02:09
карма: 6

0
Ответов: 926
Рейтинг: 3
#392: 2017-12-03 02:03:15 ЛС | профиль | цитата
flint2,
Спасибо, работает.
andrestudio,
По*издеть оно знамо дело, вот только ваш пример (уже который по счету нерабочий) не работает. А у флинта рабочий.
карма: 0

0
Ответов: 4320
Рейтинг: 466
#393: 2017-12-03 02:13:52 ЛС | профиль | цитата
user_asm писал(а):
По*издеть оно знамо дело, вот только ваш пример (уже который по счету нерабочий) не работает. А у флинта рабочий.


user_asm, я просто охреневаю как вы летаете зелёные
flint2, ну давай покумекаем, я правда сейчас торент клиентом занимаюсь, тоже пока не всё устаканилось в проекте
карма: 4

0
Ответов: 1287
Рейтинг: 85
#394: 2017-12-03 10:28:33 ЛС | профиль | цитата


Add(DatePicker,3713768,259,77)
{
Left=20
Top=30
Width=135
Height=24
Point(CurrentDateTime)
link(onChange,8957237:doEnabled,[(321,83)(321,188)])
}
Add(Edit,16145800,462,84)
{
Left=170
Top=95
Width=30
Text="0"
DataType=2
}
Add(Button,8957237,329,182)
{
Left=15
Top=145
Width=130
Enabled=1
Caption="Счёт дней"
Point(doEnabled)
link(onClick,1785971:doWork,[])
}
Add(Label,14347521,210,217)
{
Left=20
Top=5
Width=110
Height=20
Caption="Начальная дата"
}
Add(DatePicker,12647910,525,182)
{
Left=20
Top=95
Width=135
Height=24
}
Add(Label,2383458,217,224)
{
Left=20
Top=70
Width=101
Height=20
Caption="Конечная дата"
}
Add(UpDown,14716132,413,84)
{
Left=200
Top=95
Max=1
Min=-1
link(onPosition,16145800:doText,[])
}
Add(Label,6308306,224,231)
{
Left=170
Top=75
Width=122
Height=20
Caption="+/- 1 рабочий день"
}
Add(Memo,8411243,462,231)
{
Left=310
Top=20
Width=265
Height=145
ScrollBars=2
}
Add(Button,1728302,322,238)
{
Left=160
Top=145
Width=130
Caption="Очистить список"
link(onClick,8411243:doClear,[])
}
Add(DateConvertor,5602767,462,182)
{
Mode=7
Format="dd.MM.yyyy "
Point(Result)
link(onResult,12647910:doSetDate,[])
}
Add(ComboBox,3324218,371,70)
{
Left=170
Top=30
Width=95
Height=24
Strings=#2:10|2:20|2:25|
Text=""
ReadOnly=0
Point(EditText)
}
Add(Label,12246042,231,238)
{
Left=170
Top=5
Width=36
Height=20
Caption="Срок"
}
Add(MainForm,8148382,210,147)
{
Width=598
Height=211
}
Add(VBJScript,1785971,378,182)
{
WorkPoints=#6:doWork|
EventPoints=#9:onEndDate|5:onRes|
DataPoints=#7:StartDt|9:Timeframe|11:AmendmentDt|
Script=#18:Sub doWork(dt,idx)|0:|51: Dim intTotalDays, intWeekendDays, intBusinessDays|37: Dim intTimeframe, DtBegin, wDays, i|59: Const MAX_TOTAL_DAYS = 60 ' максимальный расчётный период|4: |31: ' проверка на валидность даты|1: |38: ' If Not IsDate(sys.StartDt) Then |16: ' Exit Sub|11: ' End If|0:|2: |19: ' читаем с точек |46: dtmStart = Cstr(sys.StartDt) '- дата начала|60: ' кол-во дней c учётом срока и поправки +/- рабочий 1 день|65: intTimeframe = Cstr(sys.Timeframe) + CInt(sys.AmendmentDt) |2: |28: DtBegin = dtmStart - 1 |32: For i = 0 To MAX_TOTAL_DAYS|27: DtBegin = DtBegin + 1|47: wDays = DatePart("w", DtBegin, vbMonday)|38: intTotalDays = intTotalDays + 1|37: If wDays = 7 Or wDays = 6 Then|43: intWeekendDays = intWeekendDays + 1|11: Else|46: intBusinessDays = intBusinessDays + 1|47: If intBusinessDays = intTimeframe Then|19: Exit For|17: End If |13: End If|9: Next|20: ' вывод результата|39: If 0 = CInt(sys.AmendmentDt) Then|82: sys.onRes "-------------------- +/- " & 0 & " деней------------------------"|48: Else If 0 < CInt(sys.AmendmentDt) Then|82: sys.onRes "--------------------- + " & 1 & " денень------------------------"|99: Else sys.onRes "--------------------- - " & 1 & " денень------------------------"|17: End If|13: End If|64: sys.onRes "всего дней между двумя датами = " & intTotalDays|50: sys.onRes "выходных дней = " & intWeekendDays|53: sys.onRes "рабочих дней = " & intBusinessDays |32: sys.onEndDate CDbl(DtBegin)|3: |7:End Sub|
UseName=0
link(onEndDate,5602767:doConvert,[])
link(onRes,8411243:doAdd,[(436,195)(436,237)])
link(StartDt,3713768:CurrentDateTime,[(384,146)(265,146)])
link(Timeframe,3324218:EditText,[])
link(AmendmentDt,16145800:Text,[(398,149)(468,149)])
}


Редактировалось 1 раз(а), последний 2017-12-03 10:29:12
карма: 6

0
Ответов: 4320
Рейтинг: 466
#395: 2017-12-03 11:49:30 ЛС | профиль | цитата
flint2, у тебя что колбаса в клавиатуре застряла
Ну а по делу примерно так: Чувак парится уже месяц с этой шнягой (уже бы давно vbs выучил по моему совету) клянчит рыбу (что бы не было недорозумений - готовое решение его проблемы) Ну коли он в этот топик попал думаю помогу, что бы не скучать 0,5 , но чуваку оказалось нужна была другая рыба. Фиг с ним, думаю надо дело довести до логического конца. Даю рыбу №2, (хотя пришлось с женой поругаться из за генеральной уборки в которой моя роль была по выхлопыванию паласов с сыном, в итоге сын хлопал один, заметь, я в это время чуваку помогал) Ну что подводим итоги: пришёл добрый дядька flint2, разжевал рыбу(причём не петря что отрубил проверку на вшивость даты, хотя достаточно было onCreate отключить <<ну что бывают у меня с похмела такие огрехи>>), положил в рот, И
user_asm писал(а):
flint2,
Спасибо, работает.
andrestudio,
По*издеть оно знамо дело, вот только ваш пример (уже который по счету нерабочий) не работает. А у флинта рабочий.

Делайте выводы господа


Редактировалось 1 раз(а), последний 2017-12-03 11:50:40
карма: 4

0
Ответов: 1287
Рейтинг: 85
#396: 2017-12-03 12:21:34 ЛС | профиль | цитата
хотя достаточно было onCreate отключить <<ну что бывают у меня с похмела такие огрехи>>)

Честно говоря, это мой первый опыт с этим языком. (и на грудь принял)
В синтаксис вроде легко въехал, а чтобы через точки разные типы протащить - методом проб.
Потому что незнаком с операторами.
Можно памятку написать - "Как въехать в незнакомый язык".

На счет колбасы в клавиатуре, так в темноте печатал и лёжа, да и днём не очень видно с кровати.
P.S.
Сегодня сделал голубцы, тоже в первый раз. Что удивительно, не блин комом, а может с голодухи...
Сыну понравилось! На работу завтра взмёт. (16:52) сего дня.

Редактировалось 2 раз(а), последний 2017-12-03 16:53:29
карма: 6

0
Ответов: 4320
Рейтинг: 466
#397: 2017-12-04 17:53:24 ЛС | профиль | цитата
flint2, я конечно от безделья и для тренировки мозга мог бы ему и IC состряпать, тут дело было в принципе, показать как это всё просто. Ну ведь ни хрена не понял, художник блин...
карма: 4

0
Ответов: 3837
Рейтинг: 620
#398: 2017-12-08 17:13:51 ЛС | профиль | цитата
Подскажите как правильно выдавать данные в MT-поток в своем коде. Этот пример постоянно жрет память после нажатия на кнопку.



Add(MainForm,2953706,21,105)
{
Width=298
Position=1
}
Add(Button,5706304,168,154)
{
Left=75
Top=15
Caption="Test!"
link(onClick,6087008:doEvent1,[])
}
Add(Edit,13453822,266,105)
{
Left=15
Top=15
Text="1000"
}
Add(For,6980961,259,161)
{
Start=1
link(onEvent,8686094:doEvent1,[])
link(End,13453822:Text,[])
}
Add(Label,7779441,406,168)
{
Left=135
Top=20
Width=10
Height=17
Caption="0"
}
Add(CounterEx,14700149,357,168)
{
Max=999999999
link(onNext,7779441:doText,[])
}
Add(Hub,8686094,315,161)
{
link(onEvent1,16037272:doWork,[])
link(onEvent2,14700149:doNext,[])
}
Add(StrCatDelim,6856616,567,161)
{
Delimiter=": "
link(onStrCatDlm,6742944:doAdd,[(615,167)(615,153)])
}
Add(InlineCode,16037272,511,161)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|22: OutDT, TmpDT: TData;|16: FreeDT: PData;|5:begin|15: Inc(Counter);|2: |35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|2: |36: AddMTData(@OutDT, @TmpDT, FreeDT);|2: |31: _hi_OnEvent(onResult, OutDT);|2: |19: FreeData(@OutDT);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,6856616:doStrCatDlm,[])
}
Add(ListBox,6742944,630,147)
{
Left=15
Top=45
Width=260
Height=215
}
Add(Hub,6087008,217,154)
{
link(onEvent1,6742944:doClear,[])
link(onEvent2,6980961:doFor,[])
}
карма: 17

0
Ответов: 4320
Рейтинг: 466
#399: 2017-12-08 19:14:57 ЛС | профиль | цитата
Netspirit, я конечно не гуру и до их "фэншуй" мне далеко, но думаю как то так...
Add(MainForm,14216569,21,91)
{
Width=298
Position=1
}
Add(Button,5706304,168,140)
{
Left=75
Top=15
Caption="Test!"
link(onClick,6087008:doEvent1,[])
}
Add(Edit,13453822,266,91)
{
Left=15
Top=15
Text="1000"
}
Add(For,6980961,259,147)
{
Start=1
link(onEvent,16037272:doWork,[])
link(End,13453822:Text,[])
}
Add(Label,7779441,406,210)
{
Left=135
Top=20
Width=10
Height=17
Caption="0"
}
Add(CounterEx,14700149,357,210)
{
Max=999999999
link(onNext,7779441:doText,[])
}
Add(StrCatDelim,6856616,546,147)
{
Delimiter=": "
}
Add(InlineCode,16037272,329,147)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|22: OutDT, TmpDT: TData;|16: FreeDT: PData;|5:begin|15: Inc(Counter);|35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|63: CopyData(@OutDT,@TmpDT); //копия потока из unit hiMT_Add.pas;|36: AddMTData(@OutDT, @TmpDT, FreeDT);|31: _hi_OnEvent(onResult, OutDT);|19: FreeData(@OutDT);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,8683788:doEvent,[])
}
Add(ListBox,6742944,630,133)
{
Left=15
Top=45
Width=260
Height=215
}
Add(Hub,6087008,217,140)
{
link(onEvent2,6980961:doFor,[])
}
Add(Debug,8683788,413,147)
{
}


Редактировалось 1 раз(а), последний 2017-12-08 19:15:36
карма: 4

0
Ответов: 3837
Рейтинг: 620
#400: 2017-12-08 21:43:41 ЛС | профиль | цитата
Схема битая какая-то. Но результат тот же.
карма: 17

0
Ответов: 4320
Рейтинг: 466
#401: 2017-12-08 22:09:37 ЛС | профиль | цитата
Netspirit, схема не битая, просто лишнее отцепил для наглядности, запусти диспетчер задач и проверь.
Кстати для счётчика можно и константы использовать, этакие глобально локальные переменные

Add(Button,5706304,266,161)
{
Left=75
Top=15
Caption="Test!"
link(onClick,16037272:doWork,[])
}
Add(InlineCode,16037272,322,161)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|5://var|21:// Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|5:const|23: Counter: Integer = 0;|5:begin|15: Inc(Counter);|33: _hi_OnEvent(onResult, Counter);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,8683788:doEvent,[])
}
Add(Debug,8683788,392,161)
{
}
Add(MainForm,4815798,266,112)
{
Width=298
Position=1
}

карма: 4

0
Ответов: 9804
Рейтинг: 340
#402: 2017-12-09 02:04:40 ЛС | профиль | цитата
2Netspirit: вот так, вроде - и не жрет...
схема

Add(MainForm,1950040,91,70)
{
Width=298
Position=1
}
Add(Button,5706304,238,119)
{
Left=75
Top=15
Caption="Test!"
link(onClick,6087008:doEvent1,[])
}
Add(Edit,13453822,336,70)
{
Left=15
Top=15
Text="1000"
}
Add(For,6980961,329,126)
{
Start=1
link(onEvent,8686094:doEvent1,[])
link(End,13453822:Text,[])
}
Add(Label,7779441,476,133)
{
Left=135
Top=20
Width=10
Height=17
Caption="0"
}
Add(CounterEx,14700149,427,133)
{
Max=999999999
link(onNext,7779441:doText,[])
}
Add(Hub,8686094,385,126)
{
link(onEvent1,16037272:doWork,[])
link(onEvent2,14700149:doNext,[])
}
Add(StrCatDelim,6856616,637,126)
{
Delimiter=": "
link(onStrCatDlm,6742944:doAdd,[(685,132)(685,118)])
}
Add(InlineCode,16037272,581,126)
{
WorkPoints=#6:doWork
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|22: OutDT, TmpDT: TData;|16: FreeDT: PData;|5:begin|15: Inc(Counter);|2: |35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|2: |36: AddMTData(@OutDT, @TmpDT, FreeDT);|2: |32: _hi_OnEvent_(onResult, OutDT);|2: |19: FreeData(FreeDT);|4:end;|0:|0:|0:|0:|4:end.|
link(onResult,6856616:doStrCatDlm,[])
}
Add(ListBox,6742944,700,112)
{
Left=15
Top=45
Width=260
Height=215
}
Add(Hub,6087008,287,119)
{
link(onEvent1,6742944:doClear,[])
link(onEvent2,6980961:doFor,[])
}

Редактировалось 2 раз(а), последний 2017-12-09 02:18:27
карма: 8

0
Ответов: 3837
Рейтинг: 620
#403: 2017-12-09 20:05:04 ЛС | профиль | цитата
Galkov, спасибо! И ведь вроде пробовал этот вариант, но что-то упустил. Нужно взглянуть на следующие файлы, где есть AddMTData():
hiDSC_Query.pas
hiDS_MySQL.pas
hiDS_ODBC.pas
hiDS_OLEDB.pas
hiDS_SQLite.pas
hiHardDisk.pas
hiMathParse.pas
hiMST_ArrayRows.pas
hiMST_CheckBoxes.pas
hiMST_Selected.pas
hiMTStrTbl.pas
hiMT_Add.pas
hiMT_AddData.pas
hiMT_Array.pas
hiMT_ChanelToIndex.pas
hiOLEdb_Query.pas
hiSQLite_Query.pas

Там FreeData() вызывается не с тем параметром, что шел 3-им в AddMTData(). В hiGE_Sprite.pas, hiGE_SpriteHit.pas вообще не вижу FreeData().
карма: 17

0
Ответов: 9804
Рейтинг: 340
#404: 2017-12-09 20:50:35 ЛС | профиль | цитата
Netspirit писал(а):
Нужно взглянуть на следующие файлы,

За MathParse я отвечаю, все там правильно, данные типа TData специально дублируются, потому что _ReadData портит данные "по определению".
А не как в твоем примере - в результате паразитной "обратной отдачи".
Ну да, не третий параметр в AddMTData()... Но так надо было в данном конкретном случае.

И в твоем примере, @OutDT - тоже правильно, было бы. Потому-что в данном конкретном случае это совпадает с FreeDT.
И, в конкретном случае - порой эффективней сделать цепочку "ручками", без динамических заморочек с созданием/уничтожением.
Например

Add(InlineCode,16037272,399,84)
{
WorkPoints=#6:doWork|
EventPoints=#8:onResult|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|28: Windows, KOL, Share, Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|0:|10: public|29: onResult: THI_Event; |54: procedure doWork(var _Data: TData; Index: Word);|6: end;|0:|14:implementation|0:|3:var|19: Counter: Integer;|0:|60:procedure THiAsmClass.doWork(var _Data: TData; Index: Word);|3:var|22: OutDT, TmpDT: TData;|5:begin|15: Inc(Counter);|2: |35: // Хочу выдать в поток 2 элемента|28: dtInteger(OutDT, Counter);|36: dtString(TmpDT, Int2Str(Counter));|19: // Да на здоровье|24: OutDT.ldata := @TmpDT;|31: _hi_OnEvent(onResult, OutDT);|4:end;|0:|0:|0:|0:|4:end.|
}

Редактировалось 1 раз(а), последний 2017-12-09 20:51:09
карма: 8

0
Ответов: 3837
Рейтинг: 620
#405: 2017-12-10 12:10:27 ЛС | профиль | цитата
Galkov писал(а):
И в твоем примере, @OutDT - тоже правильно, было бы.
Ну, так память же жрет - не освобождает, видимо, что-то.
Galkov писал(а):
порой эффективней сделать цепочку "ручками"
Спасибо, чувствовал необходимость в таком решении.
карма: 17

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)