CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

复制.txt的文本粘贴到代码区,显示的是‘?’,急……

楼主langziwujia007(※刑警队长※)2004-12-03 11:52:55 在 Delphi / VCL组件开发及应用 提问

我现在要读取一个固定格式的.txt文本内容,然后写入到数据库中。但是当我根据字符的长度选择性写入到数据库时,总是出现长度的计算错误。  
  例如我判断‘你’和‘ni’时,应该长度为2。但是我的代码中显示的是‘?’和‘ni’就成了长度为1和2了。  
  delphi重新装了,还是不行…… 问题点数:100、回复次数:13Top

1 楼thunderniao(寒冷的火)回复于 2004-12-03 12:02:18 得分 10

怎么显示的?string类型有时会无法识别汉字,用双字节字符串类型来显示吧Top

2 楼g961681(技术庸人(情商太低))回复于 2004-12-03 12:11:54 得分 5

关心一下吧!Top

3 楼czx0514(不想再做那份工作)回复于 2004-12-03 12:25:59 得分 10

是字符集的原因吧Top

4 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2004-12-03 12:26:54 得分 10

考虑用AnsiString的函数或WideString  
   
  http://lysoft.7u7.netTop

5 楼zhmnsw(糖醋鼻子)回复于 2004-12-03 12:35:09 得分 5

????Top

6 楼langziwujia007(※刑警队长※)回复于 2004-12-03 12:41:25 得分 0

这是部分代码,大家帮我看一下。Top

7 楼langziwujia007(※刑警队长※)回复于 2004-12-03 12:41:50 得分 0

Postalcode:=trim(leftStr(str1,10));  
  Address:=trim(Midstr(str1,11,50));  
  Company:=trim(Midstr(str1,61,50));  
  UserName:=trim(Midstr(str1,111,20));Top

8 楼whitetiger8(键盘未敲坏,基本功未练成)回复于 2004-12-03 13:04:14 得分 0

字符集的问题Top

9 楼langziwujia007(※刑警队长※)回复于 2004-12-03 13:12:33 得分 0

字符集的问题该怎么处理啊,我不懂,望大家指教。  
  txt文本中显示的字体是‘宋体’,但是原样拷到代码区就不显示了。  
  大家帮帮啊,分不够可以再加。千万不要因此让我对Delphi失去了信心啊。Top

10 楼langziwujia007(※刑警队长※)回复于 2004-12-03 13:45:04 得分 0

这是全部代码,大家帮帮我啊,我急死了。  
   
   
  unit   GetInfo;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   StdCtrls,   Buttons,   DB,   ADODB,StrUtils;  
   
  type  
      TFrmGetInfo   =   class(TForm)  
          Btn_GetInfo:   TBitBtn;  
          ADOTable1:   TADOTable;  
          Button1:   TButton;  
          ListBox1:   TListBox;  
          ListBox2:   TListBox;  
          ListBox3:   TListBox;  
          Memo1:   TMemo;  
          procedure   Btn_GetInfoClick(Sender:   TObject);  
          procedure   FormCreate(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      FrmGetInfo:   TFrmGetInfo;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TFrmGetInfo.Btn_GetInfoClick(Sender:   TObject);  
  var  
      logfile:TextFile;  
      logbak:TextFile;  
      Str1:widestring;  
      BatFile,TxtFile:wideString;  
      UserName,Company,Address,Postalcode,B1,network:widestring;  
  begin  
        BatFile:=ExtractFilePath(Paramstr(0))+'post.bat';//»ñÈ¡post.batµÄ·¾¶  
        TxtFile:=ExtractFilePath(Paramstr(0))+'Post.txt';//»ñÈ¡post.txtµÄ·¾¶  
        AssignFile(logbak,BatFile);  
        if   not   FileExists(BatFile)then  
          Rewrite(logbak)  
          else  
                Append(logbak);  
                if   not   FileExists(BatFile)then  
                      MessageDlg('Ä¿±êÎļþ²»´æÔÚ£¡',mtInformation,[mbOk],0)  
                else  
                      begin  
                            AssignFile(logfile,'post.txt');  
                            Reset(logfile);  
                            if   Eof(logfile)   then  
                                  begin  
                                        ShowMessage('ÈÕÖ¾Îļþ²»´æÔÚ£¡');  
                                        Exit;  
                                  end;  
                      end;  
  //¶ÁÈ¡Îı¾ÄÚÈÝ£¬²¢Ð´Èëµ½Êý¾Ý¿âÖÐ  
  memo1.Clear;  
        while   not   Eof(logfile)   do  
            begin  
                Readln(logfile,Str1);  
                Writeln(logbak,str1);  
                Postalcode:=trim(leftStr(str1,10));  
                Address:=trim(AnsiMidstr(str1,11,50));  
                Company:=trim(AnsiMidstr(str1,61,50));  
                UserName:=trim(AnsiMidstr(str1,111,20));  
                B1:=trim(AnsiMidstr(str1,131,10));  
                network:=trim(Ansirightstr(str1,10));  
                listbox1.Items.Add(username);  
                listbox2.Items.Add(address);  
                listbox3.Items.Add(company);  
                with   adotable1   do  
                begin  
                    TableName:='UserInfo';  
                    Open;  
                    try  
                        begin  
                          Append;  
                          FieldByName('UserName').Value:=UserName;  
                          FieldByName('Postalcode').Value:=Postalcode;  
                          FieldByName('Address').Value:=Address;  
                          FieldByName('Company').Value:=Company;  
                          FieldByName('B1').Value:=B1;  
                          FieldByName('network').Value:=network;  
                          post;  
                        end;//try  
                  except  
                          cancel;  
                  end;//try...except  
              end;//with   }  
            memo1.Lines.Add(str1);  
        end;   //while  
        CloseFile(logfile);  
        CloseFile(logbak);  
        ShowMessage('³É¹¦¶ÁÈ¡ËùÓÐÊý¾Ý£¡');  
  end;  
   
  procedure   TFrmGetInfo.FormCreate(Sender:   TObject);  
  begin  
  adoTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data   Source='+ExtractFilePath(Paramstr(0))+'UserInfo.mdb'+';Persist   Security   Info=False'  
  end;  
   
   
  end.Top

11 楼nyf1220(我是党员----不过听说最近风声紧,打算换名字)回复于 2004-12-03 14:11:59 得分 50

我给你测试了下,没什么问题啊,看的代码  
  我text内容是‘大家好我是阿杜,你叫什么名字啊,我也叫阿杜,啊,,怎么搞啊,什么意思啊’  
  最后显示结果是“家好我是”,没什么出错啊  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      LogFile:TextFile;  
      TempStr:WideString;  
      UserName,Company,Address,Postalcode:widestring;  
  begin  
      AssignFile(LogFile,'c:\test.txt');  
      Reset(LogFile);  
      try  
          while   not   eof(LogFile)   do  
          begin  
              ReadLn(logFile,Tempstr);  
          end;  
      Finally  
          CloseFile(logFile);  
      end;  
      Postalcode:=trim(leftStr(tempstr,1));  
      Address:=trim(AnsiMidstr(tempstr,2,4));  
      Company:=trim(AnsiMidstr(tempstr,6,10));  
      UserName:=trim(AnsiMidstr(tempstr,111,20));  
      showmessage(address);  
  end;Top

12 楼merkey2002(小样的)回复于 2004-12-03 15:01:38 得分 10

定義成string   試試看Top

13 楼langziwujia007(※刑警队长※)回复于 2004-12-07 09:53:43 得分 0

解决不了,只能转换成excel再读入到数据库中了。他写入到txt是用的pb,我用vb和delphi都不能判断它长度,总是出错。谢谢大家了。Top

相关问题

  • [求代码]网络上TXT文本的读写问题
  • 关于文本粘贴问题
  • 文本框可以粘贴图片吗?
  • 如何使用ultraedit看文本文件(*.txt)的二进制代码格式?(在线等待)
  • 高分求将文本(txt)文件导入到SQL数据库的代码!!!!!在线等!!!!!!!!!!!!!!!!!!
  • 读取文本文件的代码
  • 求读取文本文件的代码
  • 求在html代码中取出文本的代码,高分
  • 求javascript代码中显示和隐藏文本框的代码。
  • 用代码向文本框中添加文本,如何使文本换行

关键词

  • 代码
  • 文本
  • delphi
  • logbak
  • ansimidstr
  • batfile
  • frac34
  • tfrmgetinfo
  • trim
  • logfile

得分解答快速导航

  • 帖主:langziwujia007
  • thunderniao
  • g961681
  • czx0514
  • ly_liuyang
  • zhmnsw
  • nyf1220
  • merkey2002

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo