Hướng dẫn lập trình Delphi cơ bản từ Bluesofts.net

Liên hệ QC
BÀI 01: Lập trình Delphi cơ bản Bài 01 Tạo chương trình đầu tiên
Video này tôi hướng dẫn các bạn cách tạo một ứng dụng đầu tiên - Project và hiểu về cách Delphi chạy code và biên dịch ra các nền tảng 32, 64 bit.
em chào thầy, chúc thầy có một buổi tối vui vẻ bên gia đình và người thân, nếu thầy có rảnh ngồi lướt diễn đàn và có đọc thấy bài này giúp giùm em với, em mới cài delphi 10.2.3 và có làm theo Clip bài 1
có đoạn thầy nhấn vào button và gõ lệnh Close; thì chương trình có hiện ra gợi ý để mình chọn, nhưng trên máy em thì không hiện gì cả. em mới cài và làm theo clip nên không có vọc vạch cài đặt gì cả.
em có làm theo hướng dẫn tại đây thì thấy mọi cài đặt đều giống nhau hết mà vẫn không hiện gợi ý lệnh được ạ.
hình này trên clip của thầy
z2059747187918_5d9af253a83a60bae84e329929a82f3a.jpg
đây là khi em làm theo

z2059697840624_220e2abca1a9d2b7ca22e8a214bfa934.jpg
còn đây là trong Options em xem theo hướng dẫn bên trên thì y chang.
z2059755968081_810848df06e21ddf48fbd77e8d8044b9.png
mong sớm nhận được hồi âm từ thầy.
 

File đính kèm

  • 2020-09-04_17-45-40.gif
    2020-09-04_17-45-40.gif
    72 KB · Đọc: 3
có đoạn thầy nhấn vào button và gõ lệnh Close; thì chương trình có hiện ra gợi ý để mình chọn, nhưng trên máy em thì không hiện gì cả. em mới cài và làm theo clip nên không có vọc vạch cài đặt gì cả.
còn đây là trong Options em xem theo hướng dẫn bên trên thì y chang.
View attachment 244859
Nhìn hình của bạn tôi đoán thế này...

Bạn thử đánh dấu chọn "Auto invoke" xem sao.
 
Nhấn CTRL + SPACE
 
e có câu hỏi khi học về mảng trong delphi nhờ các ACE giải thích giúp ạ, sự khác nhau giữa các cách khai báo này là gì ạ
Mã:
var
  charArray1:TArray<Char>;
  charArray2:TCharArray;
  charArray3:Array of char;
Em có code bên dưới, khi khai báo TArray<string> thì nó có hiện dòng = array of T, nhưng nếu e sữa khai báo strArray:array of string thì lại báo lỗi
Mã:
var
   strArray:TArray<string>;
  str:string;
begin
  str:='giai phap excel';
  strArray:=str.Split([' ']);
  ShowMessage(strArray[2]);
end;
 
Em có code bên dưới, khi khai báo TArray<string> thì nó có hiện dòng = array of T, nhưng nếu e sữa khai báo strArray:array of string thì lại báo lỗi
Mã:
var
   strArray:TArray<string>;
  str:string;
begin
  str:='giai phap excel';
  strArray:=str.Split([' ']);
  ShowMessage(strArray[2]);
end;
Tôi không sử dụng Delphi đời mới bao giờ nên chỉ đoán mò. Hiện tại không có lỗi thì ắt là str.Split([' ']) trả về TArray<string>. Khi đổi thành strArray:array of string thì có lỗi bởi 1 bên (strArray) là array of string, còn bên kia (str.Split([' '])) là TArray<string>. Tức 2 kiểu không tương thích.
 
e có câu hỏi khi học về mảng trong delphi nhờ các ACE giải thích giúp ạ, sự khác nhau giữa các cách khai báo này là gì ạ
Mã:
var
  charArray1:TArray<Char>;
  charArray2:TCharArray;
  charArray3:Array of char;
Em có code bên dưới, khi khai báo TArray<string> thì nó có hiện dòng = array of T, nhưng nếu e sữa khai báo strArray:array of string thì lại báo lỗi
Mã:
var
   strArray:TArray<string>;
  str:string;
begin
  str:='giai phap excel';
  strArray:=str.Split([' ']);
  ShowMessage(strArray[2]);
end;

TCharArray chính là kiểu được khai báo
Type TCharArray = array of Char;
Vì thế 3 khai báo bên coi là như nhau.
Lỗi thứ hai là do kiểu dữ liệu không đồng nhất. Như a Batman1 đã giải thích.
 
nhưng nếu e sữa khai báo strArray:array of string thì lại báo lỗi
Cách xử lý ... :D

Bạn phải đọc kỹ help, vì nhiều khi triết lý của Delphi rất khó hiểu đối với bạn. Ví như code sau

Mã:
var
  Int1: array[1..2] of Integer;
  Int2: array[1..2] of Integer;
begin
  Int1[1] := 2;
  Int1[2] := 3;
  Int2 := Int1;
end;
compiler Delphi sẽ không chấp nhận dòng cuối vì "incompatible types". Nếu tôi lần đầu nhìn thấy code này thì tôi đoán mò là Int1 và Int2 tương thích với nhau. Nhưng với Delphi chúng không tương thích.

Int1 và Int2 chỉ tương thích khi có Int1, Int2: array[1..2] of Integer;

Nhìn TArray<string> thì chắc chắn là Delphi đời mới. Còn array of string ̣(array of ...) thì có ít nhất là từ Delphi 5 (tôi chỉ nghịch thời Delphi 5), là mảng động. Tôi đoán là TArray<string> cũng là mảng động - mảng các chuỗi. Nhưng có thể Delphi cho là chúng không tương thích về kiểu nên có lỗi.

Trong trường hợp cụ thể của bạn thì tôi đoán mò là chỉ cần ép kiểu, Delphi hết càu nhàu :D
Mã:
var
  strArray:array of string; //TArray<string>;
  str:string;
begin
  str:='giai phap excel';
  TArray<string>(strArray):=str.Split([' ']);
  ShowMessage(strArray[2]);
end;
 
@batman1 đúng như a nói, khi ép kiểu thì nó hoạt động ổn định, trong thư viện system có định nghĩa:
Mã:
 TArray<T> = array of T;
vậy ta có thể hiểu 2 mảng động đó là tương đương nhau không anh, có thể là trong trường hợp dùng split bên trên do hàm split định nghĩa kiểu trả về là TArray<string> nên ta bắt buộc phải dùng đúng như thế.
Mã:
function TStringHelper.Split(const Separator: array of Char): TArray<string>;
 
@batman1 đúng như a nói, khi ép kiểu thì nó hoạt động ổn định, trong thư viện system có định nghĩa:
Mã:
 TArray<T> = array of T;
vậy ta có thể hiểu 2 mảng động đó là tương đương nhau không anh, có thể là trong trường hợp dùng split bên trên do hàm split định nghĩa kiểu trả về là TArray<string> nên ta bắt buộc phải dùng đúng như thế.
Mã:
function TStringHelper.Split(const Separator: array of Char): TArray<string>;
Tôi nghỉ chơi từ hồi Delphi 5 rồi nên bạn tự đọc help nhé. Tôi thì cho là 2 mảng như nhau nhưng Delphi nó có triết lý của nó. Ví như Int1 và Int2 mà tôi đưa ra ấy, tôi dám mang đầu ra cá là Int1 và Int2 tương thích với nhau nếu là tôi phán. Nhưng Delphi phán là không tương thích thì phải nghe theo vì đó là đồ chơi do Delphi đưa ra mà. Rõ ràng cả 2 NHÌN đều là array[1:2] of integer mà còn không tương thích thì nói chi đến 1 bên NHÌN là array of string và bên kia NHÌN là TArray<string>. Rõ ràng mắt nhìn như nhau còn không tương thích thì khi mắt nhìn đã thấy khác thì sự không tương thích dường như có vẻ mạnh hơn. Tất nhiên Delphi nó có "lý do" của nó.
 
@batman1 để sử dụng khai báo như trên của anh
Mã:
Int1: array[1..2] of Integer;
 Int2: array[1..2] of Integer;
Em không biết cách nào để gán mảng int1 cho mảng int2, buộc phải khai báo 1 Kiểu dữ liệu
Mã:
type
  TArrayinteger = array of integer;
- Nếu không khai báo kiểu dữ liệu này mà cho kiểu trả về của hàm là "array of integer" thì sẽ báo lỗi, mà mặc dù đã định nghĩa "TArrayinteger = array of integer" , nhưng nếu 1 bên có kiểu dữ liệu "array of integer", bên kia là "TArrayinteger" thì vẫn lỗi.
Mã:
Function GanArray(const Arr: TArrayinteger): array of integer; // Lỗi
--------------------------------------------------------------------------
Mã:
procedure THelloForm.btnDemoClick(Sender: TObject);
var
  Int1: TArrayinteger;
  Int2: TArrayinteger;
begin
  SetLength(Int1,2);
  Int1[0] := 2;
  Int1[1] := 3;
  Int2 := GanArray(int1);
  ShowMessage(inttostr(Int2[1]));
end;
Mã:
function THelloForm.GanArray(const Arr: TArrayinteger): TArrayinteger;
var
  i: Integer;
begin
  SetLength(Result,length(Arr));
  for i := low(Arr) to High(Arr) do
  begin
      Result[i]:=Arr[i];
  end;
end;
 
Delphi hiện là một trong các ngôn ngữ lập trình mạnh trên thế giới, cho phép lập trình duy nhất một code và biên dịch cho các nền tảng hệ điều hành Windows (32, 64-bit), Mac OSX, iPhone, Android, Linux. Lập trình trên Delphi rất trực quan, các component phong phú, tương tác linh hoạt với hệ điều hành. Ngôn ngữ lập trình là Object Pascal, cho phép nhúng cả ngôn ngữ ASM , những người đã học Pascal học sẽ rất nhanh. Delphi biên dịch phần mềm ra mã máy (Native code) tốc độ rất là nhanh, không giống như .NET, Java, Ruby chỉ là thông dịch. Delphi cho phép xây dựng rất nhiều loại ứng dụng: Database, Server, Game, Music, Service, Application,... Delphi thực sự rất mạnh mẽ, làm chủ ngôn ngữ này bạn có cơ hội trở thành một cao thủ lập trình hệ thống, lập trình ứng dụng đa nền tảng....

Trong topic này tôi chia sẻ với các bạn các bài học lập trình Delphi cơ bản sẽ giúp các bạn bước đầu tiếp cận với ngôn ngữ lập trình mạnh mẽ này dễ dàng nhất.

BÀI 01: Lập trình Delphi cơ bản Bài 01 Tạo chương trình đầu tiên
Video này tôi hướng dẫn các bạn cách tạo một ứng dụng đầu tiên - Project và hiểu về cách Delphi chạy code và biên dịch ra các nền tảng 32, 64 bit.

BÀI 02: Lập trình Delphi với Form, thiết lập thông tin phần mềm của bạn
Video này tôi hướng dẫn cách lập trình Delphi với Form, thiết lập thông tin phần mềm, thuộc tính của Form. Lập trình Form mẹ gọi form con với cách truyền tham số nút bấm từ TButton.ModalResult...

Các bạn xem thêm các bài học Delphi cơ bản tại đây.
Anh có thể cho em xin bộ cài Delphi với ạ, em đang muốn tìm hiểu về ngôn ngữ này ạ. Em cảm ơn anh
 
Anh có thể cho em xin bộ cài Delphi với ạ, em đang muốn tìm hiểu về ngôn ngữ này ạ. Em cảm ơn anh

Đây là phiên bản cộng đồng nhé
Delphi & C++Builder FREE Community Editions updated to version 10.4.2 are now available! The Community Editions of Delphi & C++Builder are for students and hobbyists. Download it now! https://embt.co/CommunityEditions10-4-2 #developers #programming #softwaredevelopment
 
Đây là phiên bản cộng đồng nhé
Delphi & C++Builder FREE Community Editions updated to version 10.4.2 are now available! The Community Editions of Delphi & C++Builder are for students and hobbyists. Download it now! https://embt.co/CommunityEditions10-4-2 #developers #programming #softwaredevelopment
Em mày mò cài Delphi 12 rồi anh ạ, giờ em mới tìm xem bắt đầu từ đâu đây. Thời gian tới phải mày mò và kiên trì nhiều rồi anh ạ
 
Trên Fanpage Fb “Delphi Việt Nam” có tài liệu cơ bản đấy.
Vâng, Em sẽ tìm hiểu thêm. Em cảm ơn anh, em đang theo dõi Video bài 1 của anh ạ
Bài đã được tự động gộp:

Trên Fanpage Fb “Delphi Việt Nam” có tài liệu cơ bản đấy.
Anh cho em hỏi là anh thao tác là có từ gợi ý thì phải làm thế nào ạ?
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom