小编Ric*_*and的帖子

为什么在Javascript中经常使用辅助方法?

Javascript的新手,阅读Crockford的Javascript:The Good Parts(以及其他内容)

在关于函数的第4章中,Crockford正在展示如何在外部函数中保留它以用于内部函数,我理解.

我的问题是,在他的示例代码和更类似的代码中,为什么要使用这个辅助函数:

myObject.double = function() {
  var that = this; 

  var helper = function () {
      that.value = add(that.value, that.value);
  }
  helper();
};
Run Code Online (Sandbox Code Playgroud)

是因为add()是在全局范围内,而值是在myObject中,所以我需要复制这个(myObject)然后转移到全局,我可以抓住add()?

否则我不确定为什么我需要辅助功能?

javascript

12
推荐指数
1
解决办法
5835
查看次数

在Delphi中有没有办法查看所有引用和链接到组件?

我正在重构一个大项目,需要将一些组件移动到新的模块和表单.是否有一种明智的方法来确保依赖组件的属性更新?

也许grep项目的dfms?

示例:将TDataSource从巨大的DataModule移动到较小的DataModule.在某些情况下,来源可能是40-50个表格的参考.我需要确保引用数据源的所有控件都得到更新.

delphi

9
推荐指数
2
解决办法
1724
查看次数

帮助理解javascript全局减排技术

来自DailyJS "让我们构建一个JavaScript框架"我对以下代码不太确定,显然是用作全局减排技术.

到目前为止,我的理解是在(function(){}).我理解设置turing var up,将global.turing设置为turing,然后返回窗口或者这个(如果不是在浏览器中),但是(function(global){})(this或window)让我感到困惑......我见过像这样的东西

var mything = {} 并在我的东西下设置你的所有代码,但这个成语让我有点困惑.

我真的很想理解这里的推理并记住它"有效"

(function(global) {
  var turing = {
    VERSION: '0.0.1',
    lesson: 'Part 1: Library Architecture'
  };

  if (global.turing) {
    throw new Error('turing has already been defined');
  } else {
    global.turing = turing;
  }
})(typeof window === 'undefined' ? this : window);
Run Code Online (Sandbox Code Playgroud)

javascript globals

7
推荐指数
1
解决办法
1351
查看次数

重构计划17年以上的不可测试的德尔福法典

你以前都听说过经典的Delphi应用程序.

对于第三方库,我们有150万行代码,可能是我们自己的200,000行(Dev Express,NexusDB等)

一个巨大的数据模块,我已经慢慢分成5(可能需要更多).将一些业务逻辑缓慢地移动到这些数据模块,但肯定是作为模块的方法.

一切都在"按钮下"编码,没有我们自己的类.一些表单有20k行代码.

我需要一个合理的计划才能让它变得更好.现在你无法真正测试它的任何一个,微小的变化可能会引入大量的bug等.

我想,首先,为每个主要表单获取一个单元,并将表单中的业务逻辑提取到此类/单元.像TMyForm这样的东西有一个TMyFormClass.pas,所以TmyForm最终只有UI.继续模块化数据模块,尽快编写测试.只有我们正在努力的重构.

声音健全,另外建议,有人请发给我liqour ....

delphi oop refactoring

7
推荐指数
1
解决办法
688
查看次数

Delphi XE2 FireMonkey报告选项

XE2出局了,我注意到FMX似乎没有任何报告选项?

VCL有快速报告,我认为仍然是Rave 10 - 但FMX没什么?

delphi delphi-xe2 firemonkey

5
推荐指数
1
解决办法
2540
查看次数

EDI处理的工作原理概述

我是EDI的新手,必须在遗留系统中实现它.

我想确保我有更高级别的概述正确:

1)从我的系统为给定的贸易伙伴生成EDI文件2)可能将它FTP给他们3)响应是ftp给我,我把它刮回到我的系统

我有关于这个概念吗?

我理解大多数贸易伙伴都在调整标准,所以那里有很多工作要做?

edi x12

5
推荐指数
1
解决办法
1846
查看次数

Delphi的数据库同步解决方案

我正在寻找一些起点,将Win32 Delphi应用程序的数据与Web应用程序的远程数据库集成在一起.

该项目打算解决的问题:

1)桌面在vpns上表现不佳.远程办公室的用户可以使用Web应用程序.

2)一些公司更喜欢网络应用程序到桌面应用程序

3)移动设备可以将Web应用程序作为前端.

我发现的问题:

Web应用程序将在基于Unix的系统上运行,可能是Linux,而桌面应用程序使用NexusDB,而Web应用程序可能是Postgres.不同的平台和数据库.

使用Delphi,似乎Microsoft Sync Framework不适用于此项目.

我的第一个想法是为Web应用程序提供标准REST API,让桌面应用程序点击API,就像它是一个客户端,每隔n分钟从本地数据库服务器.我已经看到了很多问题!

delphi database-design database-replication

4
推荐指数
2
解决办法
4605
查看次数

C编程(K&R 1-22)折叠输入问题

我是Delphi,Ruby和Javascript程序员,最终学习C - 从K&R开始.我正在尽力不要跳过并使用尚未介绍的库和概念.由于这是第一章教程,我只坚持一些语言功能,并希望保持这种方式.

1-22对于陌生人:

在第n列输入之前出现的最后一个非空白字符之后,编写一个程序将"长"输入行"折叠"成两条或更多条较短的行.

确保您的程序在非常长的行中执行智能操作,并且如果指定列之前没有空格或制表符.

在没有寻求外界帮助的情况下,我已经达到了1-22,但我一直在与1-22的"大多数"工作版本进行斗争.我认为我的算法......经常发臭.

到目前为止,我已经决定将输入折叠为40个字符.使用整数除法(/和模数%)我弄清楚我需要折叠每一行的次数,跳转到该列并向后计数直到我击中一个空格.空格被'\n'取代.重复+40个字符.

如果没有遇到空格,我们将在每个列停靠处进行硬折叠.

我得到一些偷偷摸摸的线路通过我的边界,并想知道我是否应该将输入读入char行[],然后一次复制到缓冲区40个字符,折叠缓冲区,并将缓冲区复制回行[] ..但这似乎特别没有工作 string.h

代码在下面,我正在寻找正确方向和解决方案的提示,因为我认为我几乎就在那里.

#include <stdio.h>

#define MAXBUF 1000
#define WRAP 20

int getline(char s[],int lim);

int main(void)
{
    int len;                /* length of each input */
    int folds;              /* how many folds we've performed */
    int lines;              /* lines the input breaks down to given len */
    int index;              /* index of fold */
    int didfold;            /* true (1) if we were able to fold on a ' ' */ …
Run Code Online (Sandbox Code Playgroud)

c arrays

2
推荐指数
1
解决办法
1534
查看次数

在Windows 8上使用Delphi XE中的Indy,Gmail失败了"Connection Closed Gracefully"

数百个Windows 8客户端中大约有2-3个在2-3周前开始收到此消息.

每个Wireshark在连接关闭之前的最后一次传输是

'2.0.0准备启动TLS'

代码段:

Smtp := TIdSMTP.Create(nil);
try
  IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(smtp);
  try
    Smtp.OnStatus := IdSMTP1Status;
    Smtp.OnWorkBegin := IdSMTP1WorkBegin;
    Smtp.OnWorkEnd := IdSMTP1WorkEnd;
    Smtp.OnWork := IdSMTPWork;
    Smtp.Host := 'smtp.gmail.com'
    Smtp.Port := 487, 565 both tried here;
    Smtp.Username := 'the email@gmail.com'
    Smtp.Password := 'The password'
    // TLS for Gmail, etc
    if UseSSL then // true 
    begin
      Smtp.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
      if Smtp.Port = 465 then
        Smtp.UseTLS := utUseImplicitTLS
      else
      if Smtp.Port = 587 then
        Smtp.UseTLS := utUseExplicitTLS
      else
        Smtp.UseTLS := utUseExplicitTLS;
      IdSSLIOHandlerSocketOpenSSL1.Host := …
Run Code Online (Sandbox Code Playgroud)

delphi gmail indy delphi-xe

2
推荐指数
1
解决办法
6660
查看次数

Delphi 2010 WriteLn到TextFile截止大约55个字符

鉴于这种混乱(多年前设计将一些数据写入csv"field1","field2"),输出文件已开始停止大约55个字符.在showmessage()调用或放置在本地String变量中也是如此.转换为TStringList以清除代码甚至以相同的方式失败.在代码停止时在IDE中将此检查为本地字符串变量将按计划显示整个构建的字符串.ShowMessage()甚至将尾随省略号放在最后.

我最终以"LD","BC63781S","JACKSON","MS","DENVER","CO","1186","0"......在showmessage和"LD","BC63781S","磁盘文件中的JACKSON","MS","DENVER","CO","1186","0".

更好的可读性 https://gist.github.com/788839

Writeln(F,
  '"'+ ACtion
  + '","' + Ini.ReadString('IP_ITS','BAccount','TEST')
  + '","' + FieldByName('PICKCITY').AsString
  + '","' + FieldByName('PICKST').AsString
  + '","' + FieldByName('DROPCITY').AsString
  + '","' + FieldByName('DROPST').AsString
  + '","' + FieldByName('TOT_MILES').AsString
  + '","' + FloatToStr(AWeight)
  + '","' + FieldByName('LENGTH').AsString
  + '","' + FloatToStr(AStops)
  + '","' + ''{grosspay}
  + '","' + FieldByName('PICK_DATE').AsString
  + '","' + FieldByName('PICK_TIME').AsString
  + '","' + FieldByName('DROP_DATE').AsString
  + '","' + FieldByName('DROP_TIME').AsString
  + '","' + AEquip
  + '","","' + ALTL
  + '"' + ',"","' + '","1","'
  + Ini.ReadString('IP_ITS','BComp','BAccount')
  + …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

0
推荐指数
1
解决办法
1176
查看次数