pascal - Pascal 尝试调用接口方法
问题描述
我正在使用 android 在 Pascal N-IDE 应用程序中运行这个 pascal 程序,然后出现这些错误:
尝试在空对象引用上调用接口方法 'com.duy.pascal.interperter.declaration.Name com.duy.pascal.interperter.declaration.lang.types.Type.getName()'
然后我尝试通过浏览器在 Pascal 在线编译器中运行这个程序,它运行良好,不知道有什么问题。
这是代码:
program testing;
uses crt;
type
ngantri = ^node;
node = record
isi : string[10];
next : ngantri;
end;
var
dpn, blk : ngantri;
pointer : string;
x : string;
cr : string;
pil : char;
// procedure baru digunakan untuk inisialisasi awal list
procedure baru(x : string; var tunjuk : ngantri) ;
begin
new(tunjuk);
tunjuk^.isi := x;
tunjuk^.next := nil;
end;
// function isempty digunakan untu mengecek apakah suatu list kosong atau tidak
function isempty(depan, belakang : ngantri) : boolean;
begin
isempty := (depan = nil) and (belakang = nil) = true
end;
// procedure tambah ngantri digunakan untuk menambakan jumlah orang dalam antrian
procedure tambahngantri(var belakang : ngantri);
var
x : string;
tunjuk : ngantri;
begin
write('Masukkan nama orang yang mau masuk antrian : ');
readln(x);
baru(x, tunjuk);
belakang^.next := tunjuk;
belakang := tunjuk;
end;
// prosedure hapusdpn digunakan untuk menghapus list dalam ngantri
procedure hapusdpn(var depan, belakang : ngantri);
var
bantu : ngantri;
begin
if isempty(depan, belakang) then
writeln('Antrian Kosong')
else if depan = belakang then
begin
depan := nil;
belakang:=nil
end
else
begin
bantu := depan^.next;
depan := bantu;
end;
end;
// prosedure selesaiantri digunakan untuk mengambil orang yang telah selesai antri
procedure slesaingantri(var depan, belakang : ngantri; var x : string);
begin
if dpn = nil then
x := 'Antrian Kosong'
else
begin
x := dpn^.isi;
hapusdpn(depan, belakang);
end;
end;
// procedure buatngantrian untuk membangun ngantri dengan input data secara interaktif
procedure buatngantrian(var depan, belakang : ngantri);
var
c : char;
tunjuk : ngantri;
i : integer;
begin
i := 0;
depan := nil;
belakang := nil;
repeat
i := i+1;
write('masukan nama ke-',i ,' =');
readln(x);
baru(x, tunjuk);
if isempty(depan, belakang) then
begin
depan := tunjuk;
belakang := tunjuk;
end
else
begin
belakang^.next := tunjuk;
belakang := tunjuk;
end;
repeat
write('tambah data yang antri [Y/T] = ');
readln(c);
until c in ['T','t','y','Y'];
until c in ['T','t'];
end;
// procedure cetak untuk mencetak isi Antrian, pintu keluar antrian disebelah kanan dan pintu masuk antrian disebelah kiri
procedure cetak(depan : ngantri; var output : string);
var
bantu : ngantri;
y : string;
begin
bantu := depan;
output := ' Loket Pendaftaran';
if isempty(dpn, blk) then
output := 'Antrian Kosong'
else
begin
while bantu<>nil do
begin
y := bantu^.isi;
output := y + '->>' + output;
bantu := bantu^.next;
end;
output := 'pintu masuk antrian ->>' + output;
end;
end;
begin
buatngantrian(dpn, blk);
repeat
repeat
// menu utama
writeln;
writeln('-----------------------------------');
writeln('[1] Buat Antrian Baru ');
writeln('[2] Tambah Antrian Pendaftar ');
writeln('[3] Ambil Orang yang selesai daftar');
writeln('[4] Loket Pendaftaran ditutup ');
writeln('-----------------------------------');
write('Pilihan anda : '); pil := readkey; writeln(pil);
writeln;
until (pil >= '1') and (pil <= '4');
// case pil of mengacu pada menu pilihan yang akan mengaktifkan salah satu procedure yang dipilih
case pil of
'1' : begin
buatngantrian(dpn, blk);
writeln;
writeln;
writeln;
end;
'2' : begin
tambahngantri(blk);
writeln;
writeln('setelah ditambah antrian menjadi : ');
cetak(dpn, pointer);
writeln(pointer);
writeln;
writeln;
writeln;
end;
'3' : begin
slesaingantri(dpn, blk, x);
writeln('',x ,' Telah selesai mendaftar,maka ia keluar dari antrian');
writeln;
writeln('Antrian menjadi :');
cetak(dpn, pointer);
writeln(pointer);
writeln;
writeln;
writeln;
end;
'4' : begin
writeln(' Loket telah ditutup ');
writeln('Antrian dilanjutkan hari berikutnya');
exit;
end;
end;
until (pil = '8');
end.
end.
解决方案
推荐阅读
- c# - c#在task1完成后启动task2
- c# - 我怎样才能摆脱分号或括号错误?
- reactjs - 在更改道具上反应更新组件
- c# - c# datatable writexml控制列名
- javascript - typeahead.js - 未捕获的 TypeError:this.displayText(...).toLowerCase 不是函数
- css - 不包含文本的列
- c# - 如何在 C# 中打印每个字符的一部分
- angular - 一个组件中的多个数据表 [Angular Material Tables] 排序、过滤和分页
- elasticsearch - Elasticsearch 最佳实践:直接从前端或后端使用
- pine-script - 我如何提出一个好问题?这是错误吗?