くだすれDelphi(超初心者用)その15

このエントリーをはてなブックマークに追加
procedure TForm1.Button1Click(Sender: TObject);
var str1,str2:widestring;
a1:integer;
begin
str1:=edit1.text;
str2:=edit2.text;
a1:=pos(str2,str1);

edit3.Text:=inttostr(a1);

end;


>>899だけど

899で書いたやつより、896さんがいった感じでやったほうが
日本語と英語まざってても対応できるから
こっちのほうがいいね

勉強になったよ、thx
ハードディスクのファイルって本当は全部0と1の集まりなんでしょう?
テキストファイルも0と1の集まりだよね?

このスレの文章も本当は0と1の集まりなの?
Delphiで文章を0と1だけの本当の変換する方法を教えてZ!
>>902
>全部0と1の集まりなんでしょう?

いいえ、違います。
on/offならともかく0と1というのは明らかに間違い。
本当
という文字は
数字で
96 7B 93 96
と表され、これを二進数(0と1の集まり)で表すと
10010110011110111001001110010110
となる。すべてのデジタル情報はこの表記に変換できる。
型識別子を引数にしたいのですがどうかけばよいのでしょうか?

function SizeOf(X): Integer;
function High(X);
function Low(X);

の(X)のように書きたいのですが、このまま書いても「パラメータの型が必要です」と言われてしまいます
function High(var X);
でどんな変数でも取れるけど目的には適わないな。
C#とかののgenericsを使うと実現できるけどDelphiにはない。
IntegerでもStringでもDoubleでもちゃんと処理する関数を書きたいなら
function High(X: Integer): Integer; overload;
function High(X: String): Stirng; overload;
function High(X: Double): Double; overload;
と地道に書くしかない。
質問したそうそうなんですが、
やりたいことは別の方法で実現できました
スレ汚しすいません。
バリアント型とか、TypeInfoを受け取ってRTTIで処理するとか、方法はあるけどね
>>903は笑えるな
910デフォルトの名無しさん:04/07/12 16:45
3MBぐらいのビットマップ画像を TImage の Picture プロパティに読み込ませて実行すると

[エラー] RLINK32: Error opening file "C:\Program Files\Borland\Delphi6\Projects\Unit1.dfm"や
[エラー] RLINK32: Error opening file "Unit1.dfm"などのエラーが出てしまいます。

以前は同じ画像を読み込ませても何もエラーが出なかったのですが
なぜか最近エラーが出るようになりました。原因がわかりますでしょうか?よろしくお願いします。
Delphi6のパーソナル版を使用しています。
TImageだけの新規プロジェクトで試してみたら
TForm に TImage だけを貼り付けて試してみたら、ということでしょうか?
やってみました。でも、15秒程度Delphiがストールした状態になり、
その後、同じエラーが出てしまいました。
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
そこでDelphiがぶっ壊れてると思わない思考に萌えます
915910:04/07/12 17:19
う〜ん・・・
一応Delphiを再インストールしてみたんですが・・・
それから、ファイルに保存してみようとしたら
「メモリストリームの拡大中にメモリが足りなくなりました」
って怒られました。自分のパソコンの問題なのかな('A`)
>>910
ハードディスクが逝かれた
>>915
Del6Pro+パッチ全部の環境では7MBのファイル一瞬でロードできるな。
単にOSのメモリが足りないんじゃないの。
918910:04/07/12 17:31
>>916
>>917
やはり自分のパソの問題だったようで。
アドバイスありがとうございました。
というか最初からエラーメッセージを書けよゴルァ
↓のような型を自分で作成し、そこに入れたデータをバイナリでファイルにセーブしようと
しましたが、

const CMaxFld = 12;
type TIni = record
TableName: string;
InsertFld: array[0..CMaxFld-1]of string;
UpDateFld: array[0..CMaxFld-1]of string;
UpDateKeyFld: string;
DeleteKeyFld: string;
end;

ファイル型の宣言をした際にコンパイルエラーが発生してしまいます。

var
F: File of TIni;

「'TIni'型は終了処理が必要です。-ファイル型として使うことはできません」
とのメッセージ内容がいまいち分からないのですが、どなたかご教授下さい。
お願いします。
stringは使えない。ShortString使っとけ
ファイルへの書き込みはTFileSream使っとけ。
922920:04/07/12 17:46
ありがとうございました。
タイトルバーが消せなくて困っています。

フォーム1を親 フォーム2を子にしてるんですが
親のタイトルバーは消せるんですが子フォームのが消せません。

なぜでしょうか?
>>924
>>808を別に否定はしないが
シーケンシャルなバイナリファイルの読み書きに
TFileStreamが向かない理由とその代案を説明してくれ。
808は無視してよし
MDI子フォームのタイトルバーがなかったら不便だろうなー
ListViewにて任意のセルにユーザー直接文字入力できるよう
設定できるプロパティってありますか?
任意のセルは無理なんじゃないの
930923:04/07/12 18:44
仕様だったんでしょうか?
なぜできないのか疑問だっただけなんで。
931513:04/07/12 21:14
>>513の質問、誰かヒントだけでも良いのでいただけない
でしょうか。。。完璧に行き詰まってしまっています。
>>931
いろんなやり方があると思うが、
普通のグリッド使って、一括処理、というのもありだと思うよ。
例えば最大99行ぐらいの伝票処理なんかだと特に向いてるかも。
同じ伝票を同時に複数人がカキコすることがある、とかだと難しくなってくるけど。
>>928
つーか、Listviewの各項目はセルとはいわんだろ。
TMediaPlayerでWaveを再生するとき、ボリュームを変更するってことで、
ネットでいろいろ探したんですが、以下のようなものがありました。
いろんな国のサイトで同じソースが出てたから、これが定番なのかも。

ttp://www.swissdelphicenter.ch/torry/printcode.php?id=618

ところが、これがウチではうまく機能しないんですが?
つまり、音量がまったく変わらないんです。ウチの環境の問題?
これは純粋にDelphiの問題じゃないのかもしれませんが、
よろしくお願いします。

ビットマップAに背景色と前景色を指定して文字を描画し、
それに少々処理を加えます。ビットマップBには任意の画像が
読み込まれています。

ここでビットマップAの背景色を透明色として、ビットマップAを
ビットマップBにコピーしたいんです。このとき、ビットマップAの
文字のアンチエイリアス処理で生じた半透明の部分も上手く
コピーしたいんです。

こんな場合、どんな方法があるんでしょうか。
BitmapB.Canvas.Draw(x,y,BitmapA);
>文字のアンチエイリアス処理で生じた半透明の部分も上手く

Canvas.Draw だとこれがうまくいかないか
>>935
重ね合わせた後に文字を書くとか?
知らんけど
939935:04/07/13 00:00
やっぱアルファブレンドの方法を
ちゃんと勉強しないとだめかな...
C#でGDI+叩けば一発なんだけどな
DelphiでもGDI+使えるよ。
ネットワークドライブの割り当てがされているフォルダがあり
OpenDialogでパスを取得したとき

e:\filder\faile.txt (ネットワークドライブ)ではなく
\\コンピュータ名\filder\faile.txt

にしたいのですがどのようにすればよいでしょうか
おねがいします。
WNetGetUniversalName
bccで作ったobjファイルをリンクしようとしているのですが、

コンパイルすると、
"forward または external 宣言された 'sum' が見つかりません"
というエラーが出ます。

具体的なコードは以下のようになってます。

=== sum.cpp ( bcc32 -c sum.cpp ) ===
extern "C" {
int __stdcall sum(int a, int b)
{
  return a + b;
}
}

=== Unit1.pas ( 一部 )==============
{$L sum.obj}

function sum(a: Integer; b: Integer): Integer; StdCall; external;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageBox(0, PChar(IntToStr(sum(2, 5))), '', MB_OK);
end;

どのようにしたら解決できるか、教えていただけると嬉しいです。
恐らく"sum"ではなく"_sum"になってると思われます
.objをバイナリエディタで開いてみてください
(伝統的にC呼びだし規約はアンダーラインが付く)

ついでに、C呼びだし規約に対応するのはstdcallではなくてcdeclです
Timageをクリックしたときに指定フォルダ(c:\pic\)にある画像(00〜10.bmp)を
ランダムに表示させるにはどうしたらいいでしょうか?
>>945
レスありがとうございます

いろいろ試してわかったのですが、
sum.cpp を sum.c にして作成した obj ファイルだとリンクできました。
extern "C" をつけてるので大丈夫だと思ったのですが、C++だと駄目なようです。

呼び出し規約については、
stdcall でも cdecl でも Cの関数提供側とPascalの呼び出し側で統一してやれば、
問題ないようです。

C++のobjファイルがリンクできないと自分には不便なのですが、
方法はないのでしょうか?
>>946
具体的に何が知りたい?

画像の読み込ませ方?
ファイル名をランダムに得る方法?
誰かTStream のテキストファイル対応版を知りませんか。
950949
ResourceStreamやMemoryStreamから
Readln、Writeln したいのれす。