Delphi5实现文件拷贝程序

news2024/11/13 12:18:47

效果图

在这里插入图片描述

opendialog、savedialog组件

对于类似TOpenDialog和TSaveDialog的功能,在Delphi 5中,你可能需要这样做:

  1. 查找或创建:首先,在Delphi 5的组件面板中查找是否有现成的文件对话框组件(拖拉组件下来到form那)。如果没有,你可能需要查看Delphi的文档或搜索在线资源以了解如何调用Windows API来实现这一点。
  2. 配置对话框:无论你是通过组件还是代码来创建对话框,你都需要配置它的属性,如过滤器(filter,这样可以设定显示文件的后缀名)、标题等。
  3. 显示对话框:调用对话框的显示方法(如Execute),让用户选择文件。
  4. 处理结果:根据用户的选择(如选择的文件名),执行相应的操作(如打开或保存文件)。

配置对话框属性

procedure TForm1.FormCreate(Sender: TObject);
begin
  dlgOpen1.Filter:='文本文档(*.txt)|*.TXT';
  dlgSave1.Filter:='文本文档(*.txt)|*.TXT';
end;

点击“打开”按钮

opendialog组件能打开文件对话框,并把选中文件的文件名返回。不能加载文件。

procedure TForm1.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute then   //打开文档选择
  begin
    edt1.Text:=dlgOpen1.FileName;    //将选中的文档名赋值到输入框
  end;
end;

点击“复制”按钮

savedialog组件也能打开文件对话框,并把要保存的文件名返回。但是不能执行保存操作。

总体的算法逻辑:

  1. 打开文件对话框,把要读取的文件名返回。
  2. 打开文件对话框,把要保存的文件名返回。
  3. 打开要读的文件。
  4. 打开要写的文件。
  5. 读(read)文件的一个字符到ch,然后再把ch写(write)进去。
  6. 读完写完,关闭两个文件。
procedure TForm1.btn2Click(Sender: TObject);
var
  Sfilename,Dfilename:string;   //源文件名、目标文件名
  F1,F2:TextFile;
  ch:Char;

begin
  if dlgSave1.Execute then  //打开保存文件对话框
  begin
    edt2.Text:=dlgSave1.FileName;   //目标文件名
    Sfilename:=edt1.Text;//源文件名
    Dfilename:=edt2.Text+'.txt'; //目标文件名

    if Length(Sfilename) <> 0 then      //源文件名不能为空
    begin
      AssignFile(F1,Sfilename);//将源文件和F1文件型变量联系到一起
      Reset(F1);  //读打开文件

      if Length(Dfilename)<>0 then
      begin
        AssignFile(F2,Dfilename);
        Rewrite(F2);
        while not Eof(F1) do     // 当未到文件末尾时循环
        begin
          read(F1,ch);
          write(F2,ch);
        end;
        CloseFile(F2);
      end
      else
        ShowMessage('目标文件名必须输入');

      CloseFile(F1);   //关闭文件
      showmessage('复制完成');
    end
    else
      ShowMessage('源文件名必须输入');
  end;
end;

完整代码

unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Dialogs, Forms,Form, Formprpt, StdCtrls;

type
  TForm1 = class(MForm)
    lbl1: TLabel;
    lbl2: TLabel;
    edt1: TEdit;
    edt2: TEdit;
    btn1: TButton;
    btn2: TButton;
    dlgOpen1: TOpenDialog;
    dlgSave1: TSaveDialog;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{点击 打开 按钮}
procedure TForm1.btn1Click(Sender: TObject);
begin
  if dlgOpen1.Execute then   //打开文档选择
  begin
    edt1.Text:=dlgOpen1.FileName;    //将选中的文档名赋值到输入框
  end;
end;

{点击 复制 按钮}
procedure TForm1.btn2Click(Sender: TObject);
var
  Sfilename,Dfilename:string;   //源文件名、目标文件名
  F1,F2:TextFile;
  ch:Char;

begin
  if dlgSave1.Execute then  //打开保存文件对话框
  begin
    edt2.Text:=dlgSave1.FileName;   //目标文件名
    Sfilename:=edt1.Text;//源文件名
    Dfilename:=edt2.Text+'.txt'; //目标文件名

    if Length(Sfilename) <> 0 then      //源文件名不能为空
    begin
      AssignFile(F1,Sfilename);//将源文件和F1文件型变量联系到一起
      Reset(F1);  //读打开文件

      if Length(Dfilename)<>0 then
      begin
        AssignFile(F2,Dfilename);
        Rewrite(F2);
        while not Eof(F1) do     // 当未到文件末尾时循环
        begin
          read(F1,ch);
          write(F2,ch);
        end;
        CloseFile(F2);
      end
      else
        ShowMessage('目标文件名必须输入');

      CloseFile(F1);   //关闭文件
      showmessage('复制完成');
    end
    else
      ShowMessage('源文件名必须输入');
  end;
end;

{窗体初始化}
procedure TForm1.FormCreate(Sender: TObject);
begin
  dlgOpen1.Filter:='文本文档(*.txt)|*.TXT';
  dlgSave1.Filter:='文本文档(*.txt)|*.TXT';
end;

end.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【通俗理解】概率图模型——从概率到图形的直观映射

【通俗理解】概率图模型——从概率到图形的直观映射 概率与图形的类比 你可以把概率看作是一个“烹饪配方”&#xff0c;它告诉我们每个成分&#xff08;事件&#xff09;出现的可能性。而图形则是一个“食谱的图表”&#xff0c;它直观地展示了这些成分之间的关系和依赖。 概率…

深入探索:GPT系列模型揭秘

Transformer发展 之 GPT系列模型结构 我按照Transformer的发展路线来学习入门 Transformer–BERT—GPT—DETR—ViT—Swin ViT / DeiT 上一篇写了Transformer&#xff0c;听了李宏毅和李沐老师的课一下子就懂了&#xff0c;今天学习GPT-123 核心思想&#xff1a; GPT和BERT的…

服务器数据恢复—SAN环境下LUN被重复映射导致写操作不互斥的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由6块硬盘组成的RAID6&#xff0c;划分为若干LUN&#xff0c;MAP到不同业务的SOLARIS操作系统服务器上。 服务器存储故障&#xff1a; 由于业务变化需要增加一台服务器&#xff0c;在存储在线的状态下将该存储中的某个LUN映…

打造沉浸式展厅空间,哪些高科技手段必不可少?

在人生的旅途中&#xff0c;我们或许会踏遍千山万水&#xff0c;将大地的壮丽景色尽收眼底。然而&#xff0c;总有一些地方&#xff0c;如同深邃的海底两万里&#xff0c;或是浩瀚无垠的宇宙银河&#xff0c;遥不可及&#xff0c;这时我们便可以在展厅的沉浸式空间中&#xff0…

Postman请求问题 connect ECONNREFUSED 127.0.0.1:80解决方法

问题描述&#xff1a; 解决方法&#xff1a; &#xff08;1&#xff09;点击file-settings &#xff08;2&#xff09;点击Proxy&#xff0c;并将右边的Use the system proxy 取消选中 &#xff08;3&#xff09;勾选use custom proxy configuration 这个8080是默认的&#xf…

MySQL学习(17):SQL编程:存储过程

1.什么是存储过程 存储过程是事先经过编译并存储在数据库中的一段 SQL语句的集合。 存储过程的特点&#xff1a; &#xff08;1&#xff09;封装&#xff0c;复用 &#xff08;2&#xff09;可以接收参数&#xff0c;可以返回数据 2.存储过程语法 2.1创建 create procedu…

查看Keepalived 的 VIP 有效、高可用、单播和组播

VIP&#xff08;虚拟 IP&#xff09; VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09; 验证 VIP 是否有效 1、没有部署之前&#xff0c;PING要设置的VIP地址&#xff0c;不通 ping 10.119.108.602、部署之后&#xff0c;所有节点进行PING要设置的VIP地址&a…

代码实现yolov3主干网络,可以直接运行

1. 主干网head版本1 import torch from torch import nn import torch.nn.functional as F class ConvBnLeakRelu(nn.Module):def __init__(self,in_ch,out_ch,k3,s1):super().__init__()self.layernn.Sequential(nn.Conv2d(in_ch, out_ch, kernel_sizek, paddingk // 2,stride…

H264记录和翻译

官方中文文档&#xff1a; &#x1f4ce;H.264_ITU官方中文版.pdf 官方下载地址&#xff1a; https://www.itu.int/rec/T-REC-H.264/en JM源码&#xff1a; https://iphome.hhi.de/suehring/tml/download/ 博客参考学习&#xff1a;H.264官方软件JM源代码简单分析-解码器ld…

真免费!10 款必备的语言类 AI 大模型

好多小伙伴反映&#xff0c;买了好多AI工具&#xff0c;但并不好用&#xff0c;今天我给你推荐10个好用且免费的语言类AI大模型。 以后就别去花冤枉钱了。 排名不分先后。 各有所长&#xff0c;大家收藏自行去测试甄选适合自己的AI工具。 — 1 — 文心一言 文心一言是百度…

Android12 显示框架之getSurface

目录&#xff1a;Android显示终极宝典 在上篇文章中&#xff0c;我们讲到了应用通过createSurface()在surfaceflinger内生成了一个Layer&#xff0c;并且获取到了该Layer的Handle且将其和其他信息保存到了SurfaceControl。应用拿到了这个SurfaceControl&#xff0c;那么接下来…

uniapp APP端使用web-view,跳转回APP指定页面

URL Scheme 首先我一开始想到的是UrlSchemes&#xff0c;发现UrlSchemes不好实现就转为下面的方法 URL Scheme 是一种用于在移动应用程序中打开另一个应用程序或执行特定操作的机制。通过使用 URL Scheme&#xff0c;应用程序可以将用户重定向到其他应用程序或执行特定的任务…

大模型在自动驾驶领域是怎么应用的?最新综述一览

写在前面 大语言模型&#xff08;LLMs&#xff09;是在海量文本语料库上训练的人工智能模型&#xff0c;具备卓越的语言理解和生成能力&#xff0c;正在改变自动驾驶&#xff08;AD&#xff09;领域。随着自动驾驶系统从基于规则和优化的方法向基于学习的技术&#xff08;如深…

关于企微群聊天工具功能的开发---PHP+JS+CSS+layui (手把手教学)

文章目录 前言准备工作PHP代码示例前端代码示例 主要是js踩的小坑&笔记最终达成的效果总结 前言 公司要求开发企微群聊天工具。首先一个客户一个群&#xff0c;其余群成员都是公司销售、设计师、工长、售后等人员。要求开发一个群聊天工具&#xff0c;工长点击进来以后就可…

selenium自动化代码报错“NoSuchElementException”——解决方案详解

假设自动化代码报错“NoSuchElementException”&#xff1a; 第一步&#xff1a;在报错的代码前&#xff0c;添加Thread.sleep(秒)&#xff0c;设置的时间长一点。 第二步&#xff1a; 执行自动化&#xff0c;在自动化打开的页面里&#xff0c;打开前端开发者工具&#xff0c…

二百五十三、OceanBase——Linux上安装OceanBase数据库(三):OBD页面上部署OceanBase数据库

一、目的 安装OceanBase后&#xff0c;启动obd web&#xff0c;需要在OBD页面上部署OceanBase数据库 二、参考文档 http://t.csdnimg.cn/Qeedq 三、实施步骤 1 在obadmin用户下&#xff0c;启动obd服务&#xff0c;登录页面访问 [obadminhurys23 oceanbase]$ obd web 2 登…

AIGC重塑设施农业:让农事操作更智能,生产效率更高

设施农业是现代农业的重要组成部分,随着人工智能等前沿技术的快速发展,这个领域迎来了新的变革机遇。尤其是大语言模型(Large Language Model,LLM)技术的崛起,其强大的语言理解和知识汇聚能力,为设施农业智能化发展带来了新的想象空间。本文将深入探讨大模型技术在设施农业生产…

寝室恶性负载识别模块原理和功能

石家庄光大远通电气有限公司寝室恶性负载识别智能模块导轨式安装&#xff0c;采用局域网或者4G集中控制&#xff0c;在宿舍多回路中可以单独设置控制参数达到精细化管理。 原理&#xff1a;‌ 电压电流检测法&#xff1a;‌通过检测电路中的电压和电流&#xff0c;‌计算电路中…

网段划分(为什么+分类划分,CIDR),ip地址组成,路由器介绍,广播地址,DHCP,NAT技术,ipv6,如何申请网络

目录 网段划分 引入 ip地址的组成 同一网段内 不同的网段 路由器 ip地址的分配 DHCP技术 分类划分法 分组 弊端 CIDR&#xff08;无类域间路由&#xff09; 变长子网掩码 数据包转发 子网地址范围计算 两个特殊的ip地址 网络号 广播地址 作用 其他解决方…

学习Java的日子 Day62 Filter过滤器

Day62 Filter过滤器 简介 Filter&#xff1a;过滤器&#xff0c;通过Filter可以拦截访问web资源的请求与响应操作。 Servlet API中提供了一个Filter接口&#xff0c;开发web应用时&#xff0c;如果编写的Java类实现了这个接口&#xff0c;则把这个java类称之为过滤器。他可以拦…