小编ant*_*009的帖子

C#如何在app.config文件中指定appData文件路径

我正在使用log4net,我将日志文件保存在AppData文件中,用于win XP/Vista等.

这是我的app.config文件到目前为止,我已经指定了名称softphone.log.Hoewver,我不知道如何指定文件的完整路径,因为每个用户将根据其用户名使用不同的路径.

<log4net>
    <logger name="default">
      <level value="DEBUG"/>
    </logger>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="softphone.log"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <maxSizeRollBackup value="10"/>
      <maximumFileSize value="1MB"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
      </layout>
    </appender>
  </log4net>
Run Code Online (Sandbox Code Playgroud)

在我的源代码中,我可以通过执行以下操作获取路径:

System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)

但是,我不能在我的app.config中使用上面的内容,如果我在我的系统上硬编码路径,那么路径将是:

C:\Documents and Settings\John\Application Data
Run Code Online (Sandbox Code Playgroud)

但是,这对每个客户来说都是不同的.那么有没有办法为app.config文件执行此操作?

非常感谢任何建议,

c# app-config

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

使用ifstream检查文件是否成功打开

我有以下将打开文件进行阅读.但是,我想检查以确保文件已成功打开,因此我使用失败来查看是否已设置标志.但是,我不断收到以下错误:

我是C++的新手,因为我来自C.所以我不确定我是否理解这个错误:

不能调用成员函数'bool std :: basic_ios <_CharT,_Traits> :: fail()const [with _CharT = char,_Traits = std :: char_traits]'没有对象

码:

int devices::open_file(std::string _file_name)
{
    ifstream input_stream;

    input_stream.open(_file_name.c_str(), ios::in);

    if(ios::fail() == true) {
        return -1;
    }

    file_name = _file_name;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ io ifstream

18
推荐指数
3
解决办法
4万
查看次数

state_checked不会打开和关闭imageview

Android Studio 2.0预览版

你好,

我有这个选择器连接到imageview.我想要imageview打开和关闭.因此off将显示绿色,并且将显示红色.

但是,当我点击时imageview没有任何反应.我尝试过state_pressed和state_checked的不同组合.而现在它变得太混乱了.我在这里想念的是什么

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="false" 
          android:drawable="@drawable/bottom_left_border"/>

    <item android:state_checked="true"
          android:drawable="@drawable/bottom_left_border_pressed">
    </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

非常感谢任何建议,

android

18
推荐指数
3
解决办法
5424
查看次数

C#后台工作者在DoWork中设置e.Result并在WorkCompleted中获取值

C#2008 SP1

我正在使用后台工作者

如果其中一个条件失败,我将e.cancel设置为true,并将字符串分配给e.result.一切都在那里工作.

但是,当workCompleted触发时,我测试了e.Result并且我得到一个异常"e.result抛出systeminvalidoperation类型的异常".

我想我可以使用全局变量在DoWork中设置并在完成的工作中进行比较.但这可能不是线程安全的.

任何人都可以告诉我为什么我用e.Result得到这个,我该如何解决这个问题?

非常感谢,

    private void bgwPrepareCall_DoWork(object sender, DoWorkEventArgs e)
    {
        // Check to see if the called number is blocked. 
        // If the nubmer is blocked display error message.
        if (this.IsNoGateway(sipUsername, statusDisplay1.PhoneNumber))
        {
            // this.SetIdleState(DialerErrorMessage.GetErrorDescription(12));
            e.Cancel = true;
            e.Result = "NoGateway";
            return;
        }

        if (!this.IsInvalidTelephoneNumber(sipUsername, statusDisplay1.PhoneNumber))
        {
            // this.SetIdleState(DialerErrorMessage.GetErrorDescription(13));
            e.Cancel = true;
            e.Result = "InvalidNumber";
            return;
        }
    }

    private void bgwPrepareCall_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Error == null)
        {
            if (e.Cancelled)
            {
                // Failed …
Run Code Online (Sandbox Code Playgroud)

c# backgroundworker

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

使用snprintf避免缓冲区溢出

我这样使用snprintf以避免缓冲区溢出:

char err_msg[32] = {0};
snprintf(err_msg, sizeof(err_msg) - 1, "[ ST_ENGINE_FAILED ]");
Run Code Online (Sandbox Code Playgroud)

-1如果字符串长度超过32个字节,我为null终止符添加了保留空间.

我的想法是否正确?

平台:

  • GCC 4.4.1
  • C99

c printf

17
推荐指数
3
解决办法
3万
查看次数

何时使用strncpy或memmove?

(gcc 4.4.4 c89)

我一直习惯于strncpy复制字符串.我从来没有真正使用memmovememcpy非常.然而,当你决定是否要使用我只是想知道strncpy,memmovememcpy

我写的代码是针对客户端/服务器应用程序的.在他们使用的文档中bcopy.但是,我可以和其他人一样吗?

bcopy((char*)server->h_addr,
      (char*)&serv_addr.sin_addr.s_addr,
      server->h_length);
Run Code Online (Sandbox Code Playgroud)

非常感谢,

c string

17
推荐指数
4
解决办法
9834
查看次数

使用memset初始化结构数组

gcc 4.4.4 c89

我有以下结构.

struct device_sys
{
    char device[STRING_SIZE];
    int id;
    char category;
};

int main(void)
{
    struct device_sys dev_sys[NUM_DEVICES];

    memset(dev_sys, 0, (size_t)NUM_DEVICES * sizeof(dev_sys));

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

当我调用memset时,我得到一个堆栈转储.这不是初始化结构数组的正确方法吗?

c memset

17
推荐指数
2
解决办法
7万
查看次数

typedef的标准

gcc 4.4.4 c89

我只是想知道在创建类型时是否应该遵循任何标准.

例如:

typedef struct date
{
} date_t;
Run Code Online (Sandbox Code Playgroud)

我也看到人们把这样的资本投入:

typedef struct date
{
} Date;
Run Code Online (Sandbox Code Playgroud)

或者变量

typedef unsigned int Age;
Run Code Online (Sandbox Code Playgroud)

或这个

typedef unsigned int age_t;
Run Code Online (Sandbox Code Playgroud)

是否有任何应遵循的标准.我个人更喜欢用_t进行后固定.

非常感谢任何建议,

c typedef

17
推荐指数
4
解决办法
1万
查看次数

使用exuberant-ctags时你会选择哪些选项?

使用旺盛的ctags 5.8 for gcc 4.4.3 c89

我刚刚开始使用exuberant-ctags,我只是想知道你添加了什么选项.

这是一个列表,我只是想知道添加太多可能是超过杀死.

$ ctags --list-kinds=c
c  classes
d  macro definitions
e  enumerators (values inside an enumeration)
f  function definitions
g  enumeration names
l  local variables [off]
m  class, struct, and union members
n  namespaces
p  function prototypes [off]
s  structure names
t  typedefs
u  union names
v  variable definitions
x  external and forward variable declarations [off]
Run Code Online (Sandbox Code Playgroud)

我打算使用以下内容:

ctags -e --c-kinds=+defgpstux -R
Run Code Online (Sandbox Code Playgroud)

我只是想知道:这有点矫枉过正吗?

c  classes                      No -- I don't have any classes as this is …
Run Code Online (Sandbox Code Playgroud)

ctags exuberant-ctags

17
推荐指数
1
解决办法
1万
查看次数

使用cmake构建工具链以交叉编译为android

gcc (GCC) 4.8.1 
android-ndk-r9 
Run Code Online (Sandbox Code Playgroud)

你好,

我的主机是Fedora 19,我想创建一个工具链,用于编译在android上运行的程序,稍后我想为iOS扩展它.

我收到以下错误:

Check for working C compiler: /opt/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -- broken
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我会收到此错误,因为已经安装了所有内容.我也安装了binutils-arm-linux-gnu.然而,这是我第一次做这类事情,所以我有很多东西混淆了.

我正在尝试使用cmake创建一个工具链文件到croos-compile以在Android设备上运行库.

我已经在以下位置安装了android-ndk-r9和编译器的路径:

/opt/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin

arm-linux-androideabi-addr2line
arm-linux-androideabi-ar
arm-linux-androideabi-as
arm-linux-androideabi-c++
arm-linux-androideabi-c++filt
arm-linux-androideabi-cpp
arm-linux-androideabi-elfedit
arm-linux-androideabi-g++
arm-linux-androideabi-gcc
arm-linux-androideabi-gcc-4.8
arm-linux-androideabi-gcc-ar
arm-linux-androideabi-gcc-nm
arm-linux-androideabi-gcc-ranlib
arm-linux-androideabi-gcov
arm-linux-androideabi-gdb
arm-linux-androideabi-gprof
arm-linux-androideabi-ld
arm-linux-androideabi-ld.bfd
arm-linux-androideabi-ld.gold
arm-linux-androideabi-ld.mcld
arm-linux-androideabi-nm
arm-linux-androideabi-objcopy
arm-linux-androideabi-objdump
arm-linux-androideabi-ranlib
arm-linux-androideabi-readelf
arm-linux-androideabi-run
arm-linux-androideabi-size
arm-linux-androideabi-strings
arm-linux-androideabi-strip
Run Code Online (Sandbox Code Playgroud)

我的交叉编译文件是:

include(CMakeForceCompiler)

set(toolchain_path /opt/ndk/toolchains)

# Target system
set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_SYSTEM_VERSION 1)

# Compiler to build for the target
set(CMAKE_C_COMPILER /opt/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc)

set(CMAKE_FIND_ROOT_PATH /opt/ndk/toolchains)
Run Code Online (Sandbox Code Playgroud)

我从我的build/debug目录运行它,我的工具链在根目录中.

[ant@localhost debug]$ …
Run Code Online (Sandbox Code Playgroud)

cmake cross-compiling toolchain android-ndk

17
推荐指数
1
解决办法
3万
查看次数