• 締切済み

delphiで、配列がなくなったら場合

確か、PHPでは、配列の最後まで行った事を調べる時に array[x] == '' と出来たと思います。 delphiで、こういった事はできないのでしょうか? 関数でもいいですし、構文でもけっこうです。 ちょっと知りたくって。 ・・・ 配列をカウントして、Lengthで配列の数を調べれば、特に問題はないんですが・・・。Length(FileHairetu)

noname#49406
noname#49406

みんなの回答

  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

Delphi2007 for Win32ユーザです。Delphi for PHPは調べていませんが…、 array[x] = '' で配列の終了を判定する方法はDelphiの汎用的な機能にはないと思います。もちろん固有のアルゴリズムで '' を番兵(Sentinel)として使用することはできます。 また、配列を参照するのにfor-inループも使えます。その場合カウンタは不要です。

noname#49406
質問者

お礼

そうなんですよね。 PHPは、型なんてあってない様なものですから。 配列がなくなったら、Falseを返す関数はないですか。 (自作すれば、いけそうだけど、Lengthでも問題ないので、そちらを使おうと思います。 ありがとうございます。

関連するQ&A

  • delphiで配列を、コピーするには。

    delphiで配列をコピーするには、どうしたらいいのでしょうか? Betr_Hairetu := Moto_Hairetu ; としたいのですが。 Betr_Hairetu := Copy(Moto_Hairetu, 0 ,Length( Moto_Hairetu ) ); では、ダメでした。 ループで、一から入れ直せばいいのですが、かっこわるいなー・・・。 なにか、簡単な関数があるとは思うのですが、探すことができませんでした。 よろしくお願いします。

  • 配列

    最後にもう一つだけお願いします。ずっと格闘しても解決できません・・ 配列の中の数字で、偶数を全て奇数の前にもって行きます 例) {1,0,1,0,0,1,1} → {0,0,0,1,1,1,1} {3,3,2} → {2,3,3} {2,2,2} → {2,2,2} 流れとしては、まず奇数の数を数えます。これは何回シフトするから知るためです。 配列0から奇数を探し、あればそれを一番最後の配列へとシフトします。 奇数を探す作業が一度終わっても、まだシフトさせないといけない奇数があるかもしれないので(奇数が連続で並んでる場合)、最初に数えた奇数の数分だけちゃんとシフトするようにしようと思います。 public void evensLeft(int[] array) { int odd=0; for (int i = 0; i < array.length; i++) { if(array[i]%2!=0) odd++; //奇数の個数 } while (odd>0) { //奇数分シフトするためのカウント for(int j=0;j<array.length;j++){ //奇数を探す if (array[j] % 2 != 0) { odd--; //奇数のカウントを1減らす for (int k = j; k < array.length-1; k++) { //その奇数を一番最後に移動 int temp = array[k+1]; array[k+1] = array[k]; array[k] = temp; } } } } return array; } いくつかの例では動くのですが、{3,3,2}の例だと配列0に3が来てしまいます。色々変えてみても結果無理でした・・・ どなたかご教授お願いします。

    • ベストアンサー
    • Java
  • 多次元配列のカウントのしかた

    すみません、質問させてください。 $array1:1次元配列 $array2:2次元配列 1次元配列のカウント(要素数)をしるには count($array1) とすれば取得することができますが、 2次元配列のカウントを取得するにはどのように すればいいのでしょうか?そんな関数はありますか? $array2のデータの中身 $array[0][0] = 'a'; $array[0][1] = 'b'; $array[1][0] = 'c'; $array[1][1] = 'd'; $array[2][0] = 'e'; $array[2][1] = 'f'; この場合、3という値が欲しいのですが・・・ 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 配列の中に複数存在する数がいくつあるか

    お世話になります。配列の中に同じ数が存在する数がいくつあるかを調べたいのですが、途中でつまづいてしまいました。 例えば配列arrayの中に、0, 0, 5, 0, 5, 1, 5といった数が格納されているとしたら 複数ある数は0と5の2つなので、2を返す、というだけのプログラムです。 int n=array.length; int cnt=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ if(array[i]==array[j]){ cnt++; break; } } } return cnt; forループで配列0から同じ数を順番に調べ、もしヒットすればカウントを増やして内側のループをブレイクし、配列1からまた順番に調べようとしたのですが、 上の例の場合、配列0と配列1が同じ数(0)ですので、カウントが余計に増えてしまいます。 どのように組めばうまく動作するでしょうか。宜しくお願いします。

    • ベストアンサー
    • Java
  • 配列を返す関数から、一つの要素だけ取り出したい。

    例えば、配列を返す関数、get_array がある時、 その配列の0番目の要素だけが欲しい時、 Perlでは、 $val = get_array[0]; (配列リファレンスを返す場合は、$val = get_array->[0]; ) みたいな感じで書けたと思いますが、 PHPでは、 $val = get_array()[0]; みたいに書けないですよね? 以下のように、二行で書かなければダメですか? $array = get_array(); $val = $array[0];

    • ベストアンサー
    • PHP
  • 要素にnullが入った多次元配列の次元数(2回目)

    同様の質問について再度投稿します。 以下、問題集で見掛けたプログラムの抜粋です。 String[][] Array = { {"Sunday", "Monday"}, null, {"Monday", "Tuesday"} }; int count =0; for (String[] A : array){ count += A.length; } System.out.println(count); このプログラムを実行すると、 要素nullのlengthが数えられないため、 NullPointerExceptionが発生する、ということです。 以前に質問した際には、 上記配列に含まれるnullは、大カッコで囲まれていないため、 次元としてカウントされないので、配列の次元数は 2次元となる、という回答を頂きました。 (配列変数も二次元で宣言されている。) 細かいようですが、大カッコで囲まれていないnullは 次元数としてカウントされなくても、要素として 拡張for文の対象にはなるのでしょうか…? 解説をお願いします。

  • Delphiでの条件分岐について

    すいません。ちょっとわからないので、質問させて頂きます。 Delphiで下記のようにIntegerの配列を宣言したとします。 var hoge : array [1..5] of integer; この配列の全ての要素のうち、ひとつでも「1」(いち)と言う値であれば、 配列の全てを「0」(ぜろ)にすると言う条件分岐(if)を作りたいのです。 どのようにして作ればいいでしょうか? 一つずつ下記(途中までですが)のように書けば出来そうですが、配列の数が 増えた場合に大変面倒な事になりそうなので、何か良い知恵があれば よろしくお願い致します。 if( (hoge[0]=1) or (hoge[1]=1)・・・・){ //配列全てに0を代入 }

  • 2次元配列を多次元配列にする。

    2次元配列を多次元配列にする。 PHP5で 2次元目はすべて同じキーの2次元配列を 2次元目のキーごとの内容を共通項にまとめて、 多次元配列にする方法を教えてください。 キーの数は膨大なので、関数の再帰呼び出し で、きれいに処理したいのです。 説明文では説明しきれないので、 やりたいことは↓の通りです。 array[0] = array([one] => "あ", [twe] => "う" [three] => "き"); array[1] = array([one] => "あ", [twe] => "う" [three] => "く"); array[2] = array([one] => "あ", [twe] => "え" [three] => "け"); array[3] = array([one] => "あ", [twe] => "え" [three] => "こ"); array[4] = array([one] => "い", [twe] => "お" [three] => "さ"); array[5] = array([one] => "い", [twe] => "お" [three] => "し"); array[6] = array([one] => "い", [twe] => "か" [three] => "す"); array[7] = array([one] => "い", [twe] => "か" [three] => "せ"); という配列があったら、これを↓のようにしたいです。 array( [あ] => array( [う] => array ("き", "く") [え] => array ("け", "こ") ) [い] => array( [お] => array ("さ", "し") [か] => array ("す", "せ") )   ) どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 配列の挿入方法

    $a = array('1','2','3'); の配列に、 指定した配列の要素の場所に値を挿入するには PHPの場合どうするのが一般的でしょうか? 期待する事は、 例えば2番目に値77を挿入したいときに、 array_insert(2,77); のようにユーザ関数を指定し、 1,2,77,3のような配列になることです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 連想配列のキー値(連番)を基に、別の配列を作るには?

    下記のように、キー値の一部に連番を持った連想配列 があるのですが、このキー値と連番で別の配列を 簡単に作る方法は無いでしょうか? もとの配列 $ary = array("item0"=>"x","item1"=>"y","item2"=>"z","data0"=>"o","data1"=>"p","data2"=>"q"); 上の$aryから $item=array([0]=>"x",[1]=>"y",[2]=>"z"); $data=array([0]=>"o",[1]=>"p",[2]=>"q"); のような形の配列を得たいのです。 foreach($ary as $key => $val){ } の構文で、$key値を調べて分断し、新しい配列に pushしていくしかないでしょうか? ※PHP4.3です

    • ベストアンサー
    • PHP

専門家に質問してみよう