for i:=low(a) to high(a)-1 do
for j:=low(a) to high(a)-i do
if a[j]<a[j+1] then
当i=0时,j循环到high(a)-i时值是9,则a[j+1]=a[10],越界,会把内存中的一个任意存放数放到a[j]<a[j+1]比较,如果a[10]位置的数大于a[9],则会把数组外的一个任意数交换到数组中,从而改变数组原来的内容,导致出错!
以上是//由大到小排序的程序,而由小到大时也存在同样的错误,未出错的原因是因为a[10]对应的数大于a[9],使得a[9]>a[10]不成立,没有进行数据交换的缘故。
正确应改为:
procedure bublerank(var a:array of integermaxtomin:boolean)
var i,j,t,temp:integer
begin
if maxtomin then //由大到校排序
begin
for i:=low(a) to high(a)-1 do
for j:=low(a) to high(a)-i-1 do // 这里改了
if a[j]<a[j+1] then
begin
t:=a[j]
a[j]:=a[j+1]
a[j+1]:=t
end
end//end if
else //由小到大排序
begin
for i:=low(a) to high(a)-1 do
for j:=low(a) to high(a)-i-1 do // 这里改了
if a[j]>a[j+1] then
begin
t:=a[j]
a[j]:=a[j+1]
a[j+1]:=t
end
end//end else
end//end function
Pascal语言 &Delphi优点
(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。
(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。
(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。
(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。
缺点
Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。
Pascal语言简介
Delphi这个名字源于古希腊的城市名。它集中了第三代语言的优点。以Object Pascal为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi自1995年3 月一推出就受到了人们的关注,并在当年一举夺得了多项大奖。
Delphi的出现打破了V承可视化编程领域一统天下的局面。并且Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于其它产品生成的程序。它还是真正的面向对象的编程语言。PASCAL语言的严谨加上可视化的优势和强大的数据库功能使得它有充分的资本和微软的VB叫板。许多人当时都认为Pascal 是最有前途的程序设计语言,并预测Delphi将会成为可视化编程的主流环境。
Delphi在你编好程序后自动转换成.EXE文件它运行时速度比VB快,而且编译后不需要其他的支持库就能运行。它的数据库功能也挺强的,是开发中型数据库软件理想的编程工具。 Delphi适用于应用软件、数据库系统、系统软件等类型的开发。而且它拥有和VB差不多一样的功能,而且一样能应用API函数,这在控制Windows很有用。
Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了d性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi的每一个设计细节,都将带给您一份欣喜。
Delphi的基本形式
Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。
Delphi已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。 在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本 *** 作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。Delphi把Windows编程的回调、句柄处理等繁复过程都放在一个不可见的Romulam覆盖物下面,这样您可?/td>
不用memo控件,采用edit控件程序:unit Unit1
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls
type
TForm1 = class(TForm)
Button1: TButton
Edit1: TEdit
procedure Button1Click(Sender: TObject)
private
{ Private declarations }
public
{ Public declarations }
end
var
Form1: TForm1
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject)
var
st,s,ss:string
a:array[1..100] of integer
i,j,k:integer
p,q,t:integer
begin
st:=edit1.Text
i:=0
while pos(',',st)>0 do begin
s:=copy(st,1,pos(',',st)-1)
val(s,j,k)
inc(i)
a[i]:=j
delete(st,1,pos(',',st))
end
val(st,j,k)
inc(i)
a[i]:=j
for p:=1 to i-1 do for q:=p+1 to i do
if a[p]>a[q] then begin t:=a[p] a[p]:=a[q] a[q]:=t end
str(a[1]:0,ss)
for p:=2 to i do begin str(a[p]:0,s) ss:=ss+','+s end
edit1.Text:=ss
end
end.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)