我爱builder

C++Builder 程序员博客

如题。。。。。

http://hi.baidu.com/83925com/blog/item/c2a53609358314ae2fddd465.html

引用 1 楼 loveshell 的回复:
http://topic.csdn.net/t/20060809/09/4936647.html
动画不知道

这个链接的方法我也想过,就是速度太慢(要读多个视频的时间.)

2楼的读FLASH帧数的,是用DELPHI写的..看不大懂..

UP

  • Filed under: C++ Builder
  • 程序要从一个文本文件中读取数据,因为这个文本文件较大,大概有10M,用Memo的话,容量不够,(Memo1->Lines->LoadFromFile("C:\\log\\one.txt");)只能载入5M左右,用RichEdit又太慢,程序要对这个文件的每一行进行判断处理,请问用什么控件好,怎么做效率高?

    刚试过了,读取20M的文件肯定是没问题的

    这些控件都是快速编程用的,如果文件大量数据的话,
    还是用传统的文件功能处理,占资料少,速度快,
    效率高,fopen()文本文件可以处理行

    引用 1 楼 whomin 的回复:
    用TStringList呗,它又没有容量限制,一样用LoadFromFile读进来,再一行行处理

    TStringList装载文件还是很快的,20M的文件读入只花了大概不到3秒钟,
    而且我核对了读取的行数、读取的最后几行数据,证明确实是完整无误的读入了

    当然,也可以用TFileStream或者FILE等来读,但如果是纯字符文本且需要断行的话,还是TStringList吧

    先试试看

    请问你是怎么装载的啊?是用LoadFromFile吗?

    是的:
    TStringList *list=new TStringList();
    list->LoadFromFile("C:\\log\\one.txt");

        TStringList  *t1=new  TStringList();
        t1-> LoadFromFile("C:\\log\\one.txt");
        for  (int  i=0;i <t1->Count;i++)
        {
        //对文件进行处理判断
        }
        delete  t1;

    C/C++ code
    TStringList *t1=new TStringList(); t1-> LoadFromFile("C:\\log\\one.txt"); for (int i=0;i <t1->Count;i++) { //对文件进行处理判断 } delete t1;

    谢谢各位

  • Filed under: C++ Builder
  • 有一个文本文件 内容是这样的:
    ……………………………………………….
    Tue Jun 05 11:18:24 2007  LOG - Phase start.
    Tue Jun 05 11:19:31 2007  LOG - Phase stopped by program.
    Tue Jun 05 11:19:41 2007  LOG - Phase start.
    Tue Jun 05 11:20:42 2007  LOG - Phase end 0:01:01
    Tue Jun 05 11:21:11 2007  LOG - Phase start.
    Tue Jun 05 11:21:56 2007  LOG - Phase end 0:00:44
    Tue Jun 05 11:24:04 2007  LOG - Phase start.
    Tue Jun 05 11:24:52 2007  LOG - Phase end 0:00:48
    Tue Jun 05 11:25:37 2007  LOG - Phase start.
    Tue Jun 05 11:27:28 2007  LOG - Phase end 0:01:51
    Tue Jun 05 11:29:13 2007  LOG - Phase start.
    Tue Jun 05 11:30:19 2007  LOG - Phase end 0:01:05
    Tue Jun 05 11:33:50 2007  LOG - Phase start.
    Tue Jun 05 11:34:52 2007  LOG - Phase end 0:01:01
    Tue Jun 05 11:36:57 2007  LOG - Job <default>
    Tue Jun 05 11:37:04 2007  LOG - Import : G:\PF\stencil\Stencil\2007.06\CI\CI001\002\CI001S0706002.txt
    Tue Jun 05 11:37:22 2007  LOG - Phase start.
    Tue Jun 05 12:19:12 2007  LOG - Phase end 0:41:50
    Tue Jun 05 12:21:49 2007  LOG - Job <default>
    ………………………..
    我将这个文件读到Memo中后,我想选取指定日期内的内容,比如:2007.6.1 到2007.7.1间的 内容,然后再作其它处理,请问要怎么做?,时间要能设定,有什么控件吗?

    每一行前不是有日期吗,我想取指定时间段内的内容

    哦。
    这种日期格式,有点麻烦。

    先读到TStringList中,把日期段的内容截取出来,然后1个1个判断是否在你要的日期段内

    若是,则是你要的,若非,则不是你要的!

    int n;
    AnsiString a,b;
    a=Memo1->Lines->Strings[2];
    n=StrLen(a.c_str());
    Edit1->Text=a;
    Edit1->SelStart=5;
    Edit1->SelLength=3;
    b=Edit1->SelText;
    if(b!="jun"&&b!="jul")
    {
    Memo1->Lines->Delete(2);
    }
    这个只是处理了月份的,你可以自己加下处理日期,年等

    引用 4 楼 jxw1987628 的回复:
    先读到TStringList中,把日期段的内容截取出来,然后1个1个判断是否在你要的日期段内

    若是,则是你要的,若非,则不是你要的!


    楼上的思路很对!在给你个参考的文件读取过程函数:

      String  value;
        TStringList  *t=new  TStringList();
        t-> LoadFromFile("监控记录.txt");
        for  (int  i=0;i <t->Count;i++)
        {
        value+=t-> Strings[i];
        Memo1->Text=value;
        }
        delete  t;

    Tue Jun 05 11:18:24 2007

    即使是这种类型的日期,也应该是有函数转换到TDateTime的。具体忘记了(多年不用了)……

    可耻的匿了……

  • Filed under: C++ Builder
  • C/C++ code
    iResult = FindFirst(OPDialog->ST->SelectedPathName + "\\*.*",faAnyFile,SearchRec); while(iResult == 0) { CapitalChar = SearchRec.Name.UpperCase().SubString( (SearchRec.Name.Length() - 2), 3); if ( CapitalChar == "JPG" || CapitalChar == "BMP" ) { Count++; } iResult = FindNext(SearchRec); }

    如何保存查找到的文件名?

    动态数组还是Tlist,那个效率更高点,或者还有更好的方法?

    iResult->SaveToFile("*.txt");

    嗯 TStringList保存字符串到文本比较方便

    不是保存到文件,而是保存在内存里,以便接下来的函数使用

    引用 4 楼 MySunGod 的回复:
    不是保存到文件,而是保存在内存里,以便接下来的函数使用

    好奇怪。用1楼的,你不savetofile自然在内存中。

    引用 5 楼 hemiya 的回复:
    引用 4 楼 MySunGod 的回复:
    不是保存到文件,而是保存在内存里,以便接下来的函数使用

    好奇怪。用1楼的,你不savetofile自然在内存中。

    问题是怎么顺序读出?我看了一下,只能给每个字符串加一个names,然后才能用names作为索引读出,很麻烦。

    不加names时可用

    TStringList->operator [](i)

    以顺序数字为索引读出字符串….

    给分吧……..

  • Filed under: C++ Builder
  • 代码如下
    this->Memo1->Lines->LoadFromFile("c:\\log\\one.txt");
    如果这个文件比较大,有10M左右,如何用进度条( ProgressBar )来显示进度?

    都是微软惹的祸

    我觉得是不是可以按字节读取,把当前读取到的字节总数反映出来就可以正常反映进度了

    用fopen,fread或者FileOpen,FileRead等函数!

    10M的话Memo组件是没有办法打开的,Memo组件最大可以处理64KB的文本。就酸用WINDOWS自带的记事本也会很卡吧!Memo没什么好的办法控制那进度条

    进度条不太好控制啊

    Timer可解决问题。

  • Filed under: C++ Builder
  • 如题,我用CB编了读写二进制的程序,其中,用的C语言fopen和fclose语句.。
    由于程序要读不同的文件,比如,读完A后,关闭A,然后再读B,然后再关闭B,用的是C语言fopen和fclose语句,可是每次关闭前一个文件后,再读下一个,为什么WINDOWS提示我的前一个还被我的程序占用着?

    比如,我fopen  A后,fclose A  然后再fopen  B,为什么程序还占用着A?

    本人是菜鸟,请大家一定指教啊~~~

    这里是原代码:
    void __fastcall TMainForm::FileOpen(TObject *Sender)
    {
    if (OpenDialog->Execute())
    {
    //打开对话框里选中的文件名,读文件..
                    //在前面定义 AnsiString  Ax1; 
              Ax1=OpenDialog->FileName;
              fp=fopen(Ax1.c_str(),"rb");
              //读文件内容..
              …………………..
              …………………….     
              //关闭文件,
              fclose(fp);
              //—————————

            }
    }

    Ax1作为整体变量,还要在别的函数里使用…

    就这样,诸位可以试一下,试着打开一些文件,再关闭,可是WINDOWS提示,那些关闭的文件,还被这个程序占用着,奇怪~~~

    flush

    我已经搞定了这个问题,是我在中间加了一个OPEN语句,没有CLOSE,如果仅仅用上面的代码,没问题的.
    不管怎么样,我还是要感谢回帖的二位,我想给你们每人加10分,不知道怎么操作~~
    ^_^

    用线程,等待结束后Close

    up

    fopen后再fclose是没有问题的.当然必须配对使用.

    一个三角也可以发超过100分帖子?

    呵呵 用处就在这里

    现在的csdn只要你登录每天都给分用…的,所以不要当心没有分。。。

    呵呵.已经解决啦

    晚了点,
    接分快乐!

  • Filed under: C++ Builder
  • 为什么保存的文本文件第一行自动是“Memo1”啊

    这行能不能去掉?

    另,SaveDialog1的Filter怎么限定为txt文本文件

    SaveDialog1->Filter="Text  files  (*.txt) &brvbar*.txt";
    上面这种写法貌似不行

    因为Memo一拖上去就自动会有“Memo1”的文本在里面,你需要先把它从Memo里清除;

    SaveDialog1->Filter="Text  files  (*.txt) ⦪.txt";  应该是行的啊

    或者直接设定 SaveDialog1->DefaultExt="txt"; 也是可以的

    感谢2位

  • Filed under: C++ Builder
  • 装了盗版的BCB6,结果里面少了个bcb6xtra.hlp文件,帮忙传一个,谢谢啊。可以发到我的邮箱里zengxiaoyuer8502@63.com

    http://www.fjye.com/uploadimg/bcb6xtra.rar

    自己去下吧

    上面那个链接下不了了
    谁能给我传一个,谢谢!
    ligu229@163.com

  • Filed under: C++ Builder
  • 小弟想做个文件传输的东东,苦于无从下手。

    各位大虾能否给小弟一下资料、例程。

    TCP、SOCKET等方式的都行。

    E-Mail:LFSoft@163.COM

    不知道你要做成什么样的,随便找本书都有,tcp的单线程的几十行代码就OK了。网上很多,书上也很多。。。。

    建议楼主 看看bcb6.0 的Demo

    Example里有个叫chat的程序 ,你改进下就可以传文件了

    另外indy的 或者fastnet组件用起来也很方便的

    如果再懒一点,拖个indy的控件TIdTCPServer,TIdTcpClient,解决,呵呵

    Indy10我怎么装不上去呀。

    出现下面的提示:
    Cannot load package 'IndySystem60.' It contains unit 'IdResurceStrings,' which is also contained in package indy60.

    是不是要先卸载Indy60啊

    嗯 是的!

    上次我装也出了好多问题!你最好先把indy老版本弄掉!

    to:jxw1987628
    如何卸载啊?

    直接假设FTP服务器用NMFTPClient组件

    to:songhtao
    呵呵,新手入门,希望能有资料或例程看看。

    使用TNMStrm和TNMStrmServ不是很好做文件传输吗?

    to:僵哥
    TNMStrm和TNMStrmServ可以同时有几个客户端在传输文件吗?是不是要使用到多线程啊?

    哪位大虾给偶些例程或资料看看呀。

    LfSoft@163.COM

    http://download.csdn.net/source/198012

  • Filed under: C++ Builder
  • 公司给了道笔试题,是这么说的:
    “请写一个小程序,能够检查出所有本机当前打开的所有文件的信息。”

    我目前正在尝试使用ZwQuerySystemInformation方法获得所有句柄,然后从中筛选出文件句柄;
    然而我得到文件句柄之后,却不知道如何通过句柄访问句柄所指向的文件对象了!
    我的问题就在这里,不知道有没有API能够达到“通过句柄访问句柄所指向的文件对象”,我要读取出文件对象的一些基本信息,至少要知道目录和文件名。
    谢谢!

    学习一下

    感谢一楼的回答,可是我查了你给的API,是VISTA才能用的,我想知道有没有XP能用的呢?

    typedef struct _BY_HANDLE_FILE_INFORMATION {
      DWORD dwFileAttributes;
      FILETIME ftCreationTime;
      FILETIME ftLastAccessTime;
      FILETIME ftLastWriteTime;
      DWORD dwVolumeSerialNumber;
      DWORD nFileSizeHigh;
      DWORD nFileSizeLow;
      DWORD nNumberOfLinks;
      DWORD nFileIndexHigh;
      DWORD nFileIndexLow;
    } BY_HANDLE_FILE_INFORMATION,
      *PBY_HANDLE_FILE_INFORMATION;

    BOOL WINAPI GetFileInformationByHandle(
      __in  HANDLE hFile,
      __out  LPBY_HANDLE_FILE_INFORMATION lpFileInformation
    );

    学习

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档