不用什么Repson,Request的,因为我只想修改本地的cook。可是用InternetSetCookie总也没有效果,谁来教教我?
我是这样写的:
var
cookbuffer:array[0..20] of char
begin
   cookbuffer[0]:='r';
   
   InternetSetCookie(PChar('http://www.xxxx.com'),pchar('userName'),@cookBuffer);
end;
可是在IE文件夹里察看,总是没有改!(我在同样的地址用InternetGetCookie取出过COOK)

解决方案 »

  1.   

    手里的一份老资料 应该对你有用吧使用Delphi 开发Web Server程序是非常简单,方便的,因为在Delphi中提供了Web Module、TWebApplication、TWebRequest、TWebResponse、TPageProducer等大量的对 象供使用.对于Cookie,Delphi3也提供了大量的程序供使用,如TWebResponse.Cookies, TWebResponse.SetCookieField,TWebRequest.Cookie,TWebRequest.CookieFields, TWebRequest.ExtractCookieFields等,应该是非常方便。但本人为了实现一功能需要设置 Cookie,但是发现使用Delphi提供的SetCookieFields设置不成功,经研究Delphi 3所带的HttpApp.Pas和IsapiApp.Pas文件发现在中文Windows 95和NT环境下该程序有错误。 根据Netscape公司的规定,Cookie的格式应为:Set-Cookie: Name=Value; expires=DATA; Path=PATH; domain=DOMAIN_NAME; secure 而且根据规定,日期(DATA)的设置必须满足格式“Wdy, DD-Mon-YYYY HH:MM:SS GMT”, 基于RFC822, RFC850, RFC1036和RFC1123等规定,但是检查HTTPAPP.PAS中的function TCookie.GetHeaderValue: string中为FormatDateTime('"expires="' + DateFormat + ' "GMT; "',Expires);,其中const DateFormat = 'ddd, dd mmm yyyy hh:mm:ss',此程序在英文环境中产生的格式是正确的,但是在中文中产生的结果却不对,因为星期和月份都将按照中文的表示方法:如将11月生产“十一月”中文串,这样在Netscape Navigator和Microsoft ;Internet Explorer就不能辨认了。 既然错误在于原VCL未考虑中文环境的问题,所以修改的方法有:1、修改VCL源程序,编译后将dcu文件拷贝到Lib目录,这样会完全改正错误,这样是最根本的解决方法,但是如果将源程序放在另一未修改的Delphi中(例如提供源程序给别人和自己重新安装)编译又将出现问题。2、因为使用并不太多,所以可以将修改的程序放在自己的程序中,使用 Delphi3提供的TWebResponse.SetCustomHeader设置,这样的好处是将程序放在自己的程序内,重新装Delphi或在另一台计算机上编译的结果也会完全正确。因为Cookie的目的一般有两种,一种是在此会话过程中使用,过后不使用,此时不需要Expires段,不会产生时间错误,可以使用Delphi3提供的所有Cookie程序;另一种为永久保存,时间一般越长越好,于是可以将时间设置为2099年二月22日,于是程序中设置Cookie的方法为:  Response.SetCustomHeader('Set-Cookie','Name=Value;expires=Sun,22Feb2099 08:08:08 GMT');(注斜体用自己的名称代替,例如设置Count=10,则Name用Count代替,Value 
    用10代替),这样就可以建立Cookie了. 以下为建立一个访问计数器的程序,可以参照: 
    const  
     LastIp:String='0:0:0:0'; //避免重复计数  
    Var  
     S:String;  
     Count:Integer;  
    begin  
     S:=Request.CookieFields.Values['count'];  
      if S< > '' then begin  
       try  
      Count:=StrToInt(S);  
       Except  
      Count:=0;  
       End;  
      end else Count:=0;  
      if LastIp< > Request.RemoteAddr then Inc(Count);  
     LastIp:=Request.RemoteAddr;  
     Response.SetCustomHeader('Set-Cookie','count='+IntToStr(Count)+'; 
    expires=Sun, 21 Feb 2010  08:08:08 GMT');  
     Response.Content:='您是第'+IntToStr(Count)+'来到本页!';  
    End;  
      

  2.   

    我已经解决var  
    cookbuffer:array[0..20]  of  char  
    str1:string;
    begin  
         str1:='要写的值;expires=Sun,22Feb2099 08:08:08 GMT';
         StrPCopy(cookBuffer,str1);       
         InternetSetCookie(PChar('http://www.xxxx.com'),pchar'userName'),@cookBuffer);  
    end;  
     
    这样就把userName的值写进去了。