我写了一个简单的程序,其中包含一个计算圆的面积的函数.该程序还询问用户是否要再次计算它并且如果输入是'N',则该程序应该停止.
这是缩小的测试用例:
#include<stdio.h>
#include<string.h>
int main(void)
{
float r;
char f;
do {
printf("Type the radius\n");
scanf("%f", &r);
printf("Repeat? [Press N for stop]");
scanf("%c", &f);
} while(f != 'N');
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但循环永远不会像预期的那样停止.
你有什么建议吗?
我有一个组合框,里面有很多项目,我必须在变量中输入所选项目的名称.
var a:string;
begin
a:=ComboBox1.Text;
end;
Run Code Online (Sandbox Code Playgroud)
这是我用于Delphi VCL应用程序的方式,它可以工作.在这里,我正在使用Firemonkey和Android开发,我没有text属性.
如何在组合框中获取所选项目的文本?
假设我要计算 8 的平方根。有两种方法可以显示结果,如下所示:
\n\n
我认为获得第二个解决方案的最佳方法是:
\n\n
我想尝试在我的 Java 应用程序中显示 2\xe2\x88\x9a2 而不是 2,828427... 所以我想按照这些步骤开发一个类。让我们考虑 8 的平方根。
\n\n正如您在下面看到的,我开发了一个输出因子的代码。如果输入 8,该方法estraiRadice()将输出2 * 2 * 2,这是正确的。
private int b = 2;\n\npublic String estraiRadice(double x) {\n\n String resRad = "";\n int[] exponents = new int[100];\n\n //Scomposizione in fattori primi\n while (x > 1) {\n\n if ((x % b) == 0) {\n x /= b;\n …Run Code Online (Sandbox Code Playgroud) 情况
这个问题可能很容易,但我是Delphi的新手,我现在正在研究它.为了更好地理解类,我做了一个计算二次方程的解.这是代码:
type
TArrayOfStrings = array of string;
type
TEqSecGrado = class(TObject) sealed
private
a, b, c: double;
delta: double;
solutions: TArrayOfStrings;
function getDelta(vala, valb, valc: double): double; overload;
public
constructor Create(a, b, c: double);
function getDelta: double; overload;
function getSolutions: TArrayOfStrings; virtual;
end;
Run Code Online (Sandbox Code Playgroud)
这确实很容易,但我想专注于constructor.
题
从我正在阅读的书中我知道(即使(TObject)不需要)我的类实际上是TObject的子类.因此,我可以Create默认调用没有参数的构造函数.我的问题是:
constructor TEqSecGrado.Create(a, b, c: double);
begin
//inherited; -> is it needed?
Self.a := a;
Self.b := b;
Self.c := c;
delta := 0;
end;
Run Code Online (Sandbox Code Playgroud)
我需要打电话inherited吗?我已经研究过,使用我刚才提到的关键字,我将 …
我必须在StringGrid(它的单元格)中居中对齐文本,我使用你在这里看到的代码.我在这里找到了另一个答案,我编辑了一些东西.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
aRect: TRect; aState: TGridDrawState);
var
LStrCell: string;
LRect: TRect;
qrt:double;
begin
LStrCell := StringGrid1.Cells[ACol, ARow];
StringGrid1.Canvas.FillRect(aRect);
LRect := aRect;
DrawText(StringGrid1.Canvas.Handle, PChar(LStrCell), Length(LStrCell), LRect, TA_CENTER);
//other code
end;
Run Code Online (Sandbox Code Playgroud)
我正在使用Lazarus,它给了我一个错误,因为它无法识别TA_CENTER.有解决方案吗
我刚刚安装了Delphi XE5,因为我想尝试用android开发.
但我无法编译任何东西,因为我总是收到错误信息.这是我编译时得到的错误:
[错误错误] PLATFORM变量"MCD"无效.PLATFORM必须是以下之一:"Win32","Win64","Android","iOSSimulator","iOSDevice"或"OSX32".如果PLATFORM由您的系统环境定义,则必须在RAD Studio IDE中覆盖它,或者在命令行上显式传递给MSBuild; 例如,/ p:Platform = Win32.
我正在使用Delphi XE5开发一个Android应用程序,我有Google Nexus 4布局.例如,a的屏幕尺寸Samsung Galaxy S4与Nexus的屏幕尺寸不同.
我有一个面板,其中包含按钮,编辑和标签等内容.我想对这个面板进行居中对齐,所以每次它都在屏幕中间.
我怎么能这样做?
我有2列StringGrid:Player和Scores.我必须对这张桌子进行排序,看看球员的得分.

情况就是这样.我尝试过StringGrid3.SortColRow(true, 1);但它只对字符串值进行排序.如果我有像[1,4,12,3]这样的数字,则排序的StringGrid变为[a,12,3,4].
我必须对Integer值进行排序,而不是字符串1.另外,我的问题是我必须用数字移动玩家的名字(如上图所示).
我怎么能这样做?
这段代码是我必须开发的项目的一部分.我需要编写一个java方法,将一个数字(基数为10)转换为另一个数字n.这是该类的代码:
public class converter {
public int from_10_to_n(int base, int newbase) {
int k = 0;
String res = "";
String output = "";
do { //Below I explain what I'm doing here
base /= newbase;
k = base % newbase;
res += String.valueOf(k);
} while (base != 0);
for(int i=res.length()-1; i>-1; i--) {
output += res.charAt(i);
}
return Integer.parseInt(output);
}
Run Code Online (Sandbox Code Playgroud)
我想以这种方式制作节目:

该do {} while();环路划分数和在K保存余.然后我创建一个for循环来反转字符串res(它有提醒).
顺便说一句,当我在我的主要方法中调用该方法时,我错过了最后一位数字.我的意思是:
converter k = new converter();
int e = k.from_10_to_n(a /*base …Run Code Online (Sandbox Code Playgroud) 情况
我正在从Marco Cantu的书中学习Delphi,我已经有了OOP的经验,因为我经常使用Java和PHP.为了更好地理解我正在阅读的内容,我做了这个测试:
type
TFraction = class
private
number: double;
num, den: integer;
fraction: string;
function hcf(x: integer; y: integer): integer;
public
constructor Create(numerator: integer; denominator: integer); overload;
constructor Create(value: string); overload;
function getFraction: string;
end;
Run Code Online (Sandbox Code Playgroud)
这是一个超级简单的类,它将十进制数转换为分数.我不包括我定义构造函数和函数的代码的其他部分,因为它们对我的问题没用.我以这种方式创建对象.
var a: TFraction;
begin
a := TFraction.Create(225, 35);
ShowMessage(a.getFraction);
//The output of ^ is 45/7
a.Free;
end;
Run Code Online (Sandbox Code Playgroud)
题
据我所知,我知道一旦我使用它就必须摆脱它,事实上我正在使用它Free.通过这种方式,我释放内存,避免内存泄漏.
顺便说一句,我看到我也有可能覆盖一个destructor.我不很了解的行为Free和Destroy.我使用的Free时候我必须摆脱一个我不再需要的物体.当我覆盖析构函数时,我可以释放对象并进行其他操作吗?
简而言之,什么时候使用免费?什么时候我应该更喜欢毁灭?