ab.com コミュニティ https://www.activebasic.com/forum/ |
|
AB4.24.00で構造体の可変長配列を使いたい https://www.activebasic.com/forum/viewtopic.php?t=2627 |
ページ 1 / 1 |
作成者: | みけCAT [ 2010年3月11日(木) 07:44 ] |
記事の件名: | AB4.24.00で構造体の可変長配列を使いたい |
AB4.24.00で構造体の可変長配列を使いたいのですが、いくつかの方法を試して失敗しました。 どうすればいいか教えてください。 ちなみに固定長配列は成功しました。 |
作成者: | ぼん [ 2010年3月12日(金) 15:31 ] |
記事の件名: | Re: AB4.24.00で構造体の可変長配列を使いたい |
> AB4.24.00で構造体の可変長配列を使いたいのですが、いくつかの方法を試して失敗しました。 具体的にどんな方法をためしたの? > どうすればいいか教えてください。 これが質問をする態度ですか? ここは学校ではないし、誰もあなたをサポートする義務もありません。 何から何まで教えてもらう、否、他人を使おうとする態度はいただけません。 > ちなみに固定長配列は成功しました。 どうでもいい情報はいりません。 |
作成者: | みけCAT [ 2010年3月13日(土) 15:05 ] |
記事の件名: | Re: AB4.24.00で構造体の可変長配列を使いたい |
すいませんでした。 >具体的にどんな方法をためしたの? 失敗した方法1 [ここをクリックすると内容が表示されます]
コード: #N88BASIC Type TEST tesuto1 As Long tesuto2[7] As Byte End Type Dim testarr As **TEST Dim dummy As TEST Dim testptr As *TEST testarr=calloc(3*Len(testptr)) testarr[0]=calloc(Len(dummy)) testarr[1]=calloc(Len(dummy)) testarr[2]=calloc(Len(dummy)) (testarr[0])->tesuto1=123 lstrcpy((testarr[0])->tesuto2,"test") (testarr[1])->tesuto1=98765 lstrcpy((testarr[1])->tesuto2,"zikken") (testarr[2])->tesuto1=45654 lstrcpy((testarr[2])->tesuto2,"dounaru") Print (testarr[0])->tesuto1 Print MakeStr((testarr[0])->tesuto2) Print (testarr[1])->tesuto1 Print MakeStr((testarr[1])->tesuto2) Print (testarr[2])->tesuto1 Print MakeStr((testarr[2])->tesuto2) free(testarr[0]) free(testarr[1]) free(testarr[2]) free(testarr) 失敗した方法2 [ここをクリックすると内容が表示されます]
コード: #N88BASIC Type TEST tesuto1 As Long tesuto2[7] As Byte End Type Dim testarr As *TEST Dim dummy As TEST testarr=calloc(3*Len(dummy)) (testarr[0])->tesuto1=123 lstrcpy((testarr[0])->tesuto2,"test") (testarr[1])->tesuto1=98765 lstrcpy((testarr[1])->tesuto2,"zikken") (testarr[2])->tesuto1=45654 lstrcpy((testarr[2])->tesuto2,"dounaru") Print (testarr[0])->tesuto1 Print MakeStr((testarr[0])->tesuto2) Print (testarr[1])->tesuto1 Print MakeStr((testarr[1])->tesuto2) Print (testarr[2])->tesuto1 Print MakeStr((testarr[2])->tesuto2) free(testarr) |
作成者: | ぼん [ 2010年3月13日(土) 16:39 ] |
記事の件名: | |
可変長配列っていうから Type str[0] As Byte End Type みたいなのを想像しちゃったよ。 幾つかの方法って2種類なんですね。試行錯誤もしないでよく言えたものです。 あなたのコードだけどこりゃひどい。 プログラムやってるんだからコンパイル通らないなら エラーをよく読んでその意味を理解して欲しいんだけどね。 ポインタについてどれだけ理解しているのか… .と->と[]の違いがよく分かってないんだね。 ->は[0].と同じ意味を持つのね。 だからa->bはa[0].bと同じ。 ほかにも突っ込みどころが多すぎてあれなんだけど、答えを示すと コード: #N88BASIC Type TEST tesuto1 As Long tesuto2[7] As Byte End Type Dim testarr As *TEST testarr = calloc(3 * SizeOf(TEST)) testarr[0].tesuto1=1 lstrcpy(testarr[0].tesuto2, "test1") testarr[1].tesuto1=2 lstrcpy(testarr[1].tesuto2, "test2") testarr[2].tesuto1=3 lstrcpy(testarr[2].tesuto2, "test3") Dim i As Long For i=0 To 2 Print testarr.tesuto1, MakeStr(testarr.tesuto2) Next これがみけCATさんのやりたい事だと思うのですがどうでしょうか。 |
作成者: | みけCAT [ 2010年3月14日(日) 08:00 ] |
記事の件名: | Re: AB4.24.00で構造体の可変長配列を使いたい |
あなたのコードでうまく動きました。 ありがとうございました。 失礼があったことを深くお詫びいたします。 申し訳ございませんでした。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |