このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。

翻訳前ページへ


Using Ini とじ込み/提出するs HOME - - - - - Lazarus Tutorials TOC - - - - - - Other 構成要素 for programmers

Simple .ini とじ込み/提出するs.

URL: lt2Nc.htm


This has good (警察などへの)密告,告訴(状), and a search button at the 底(に届く) of the page

Please don't 解任する it because it isn't 十分な of graphics, scripts, cookies, etc!

This page is "browser friendly". Make your browser window as wide as you want it. The text will flow nicely for you. It is easier to read in a 狭くする window. With most browsers, 圧力(をかける)ing 加える, minus or 無 while the 支配(する)/統制する 重要な (ctrl) is held 負かす/撃墜する will change the texts size. (大きくする, 減ずる, 回復する to default, それぞれ.) (This is more fully explained, and there's another tip, at my 力/強力にする Browsing page.)


Ini とじ込み/提出するs are 広大な/多数の/重要な. And for years, I made them more 複雑にするd than they are.

They are a 広大な/多数の/重要な, simple 代案/選択肢 to cluttering the registry.

I have written about them before... but probably not 同様に as I have done so here, September 2013. (Reviewed Aug 2024 and bits 追加するd.)

This is a level 2 tutorial not because .ini とじ込み/提出するs are "really necessary"... but because they, and this tutorial, are really 平易な. Along the way of a look at ini とじ込み/提出するs, you'll learn some more 半端物s and ends, and 簡単に get some practice at running your Lazarus... or Delphi. Everything here should work there, too.

This tutorial won't tell you "everything"... but I hope it will get you started.

I have 地位,任命するd a zip とじ込み/提出する with the sourcecode, and a 収集するd .exe... but you will learn more, if you go though this, and 現実に build the 使用/適用 as I 述べる it. You can use Copy/Paste to save typing stuff!


Before I start, a few things that I have squeezed in here... (not very 井戸/弁護士席)

I've made a 長,率いるing その上の 負かす/撃墜する: "Now we can begin!"

I apologise for the very bad start. This tutorial is about a very, very useful thing. I hope you make it through the bad start to get to the good stuff. I think your patience and 成果/努力 will be 井戸/弁護士席 rewarded.

First quick thing: 17 Aug 24, I was alarmed that I couldn't find much about "Lazarus ReadInteger". (Yes, I also looked at wiki.freepascal.org/Lazarus_Documentation).

In particular, I 手配中の,お尋ね者 to know the largest value ReadInteger could manage. From my own 実験s, it seems it can manage 2147483647, but not the next higher number. That's a bit more than 2 billion (10^9). Don't use commas in your ini とじ込み/提出する. I 港/避難所't 実験(する)d my guess, but it might 井戸/弁護士席 turn out that the lowest valid number is about 消極的な 2 billion. In other words, I think that the data type for the value ReadInteger returns is LongInt (調印するd, 32 bits).

If you give ReadInteger an 無効の value, it will return its third parameter, the one it returns if the ini とじ込み/提出する doesn't have an 入ること/参加(者) for the section and 重要な that you 手配中の,お尋ね者 to read from.

Second quick thing: 7 Nov 21, after many MANY years of having a nagging problem come and go, I finally discovered the source of my problems. Beware... this one really stumped me, for a very long time.

許す me shouting? The problems you will have if you forget the に引き続いて advice can be 極端に exasperating... and, as I have 示すd, 極端に difficult to 人物/姿/数字 out.

If you are making changes to the 負担ing and saving of things from/ to ini とじ込み/提出するs, each time you want to stop the program...

Do it with the program.

Click the "x" in the menu in the upper 権利 手渡す corner of the window. Or, if you've made a button that calls "の近くに" to shut the program 負かす/撃墜する, you can use that.

Do not, when using ini とじ込み/提出するs, use...

If you use either, the 令状-to-ini とじ込み/提出する that you need WILL NOT HAPPEN!

If you are in the habit of creating buttons to の近くに 負かす/撃墜する an program, it might be wise to put a 公式文書,認める in the sourcecode within the button's Click event handler..

//DO NOT USE APPLICATION.TERMINATE here.
//If you do, the usual "令状 to ini とじ込み/提出する"
//  WILL NOT HAPPEN when you end the program by this button.




One more "before we start" mess...

Another 訪問者 like you kindly wrote me with the に引き続いて. Sadly it (機の)カム at a very bad time for me, and even just putting this here has been difficult... I will try to get 支援する to this page, 統合する these things better. But for now, 引用するing from the emails he sent...

It is possible to use ReadDateTime/WriteDateTime in the .inifile in your LDN006.
But I suppose you have already solved the problem?





Now we can begin!

We're going to make a small form. It will have the minute of the hour the form was most recently opened on it, and the minute of the hour of the previous 開始. (Just work with me here... the "minute of the hour" thing is a 苦痛 for me, 同様に as for you. But if you want me to keep this simpler than it might さもなければ be, don't complain!)

As long as the 使用/適用 is left in "回復するd" 明言する/公表する, i.e. not 最小限に減らすd or maximized, it will also remember it's previous size and position on the 審査する. All of this "remembering" 経由で an ini とじ込み/提出する called LDN006ini.txt saved where-ever the LDN006.exe とじ込み/提出する is.

指名する the form LDN006f1, save the 部隊 as LDN006u1.pas, and the 事業/計画(する) as LDN006.

Put two labels on the form; 指名する them laPrevOpening and laThisOpening. 宣言する two 全世界の variables: bMinutePrevOpening and bMinuteThisOpening, both byte-type variables. (You probably せねばならない create two more labels, I'd call them laTxtPrevOpening and laTxtThisOpening, and I'd make the caption of the first "Minute of hour of previous 開始:")

In the OnFormCreate handler....

手続き TLDN006f1.FormCreate(Sender: TObject);
var wHour, wMin, wSec, wMilli : Word;//Needed for DecodeTime
begin
  DecodeTime(now, wHour, wMin, wSec,wMilli);//Build into Lazarus and Delphi
      //"now" is a built in 機能(する)/行事 to 選ぶ up the 現在の time from your system.
  bThisOpening:=wMin;
  laThisOpening.caption:=inttostr(bThisOpening);
end;//FormCreate

So far so good, I hope. Sorry for all the "霧" surrounding DecodeTime, "now", etc.

When you run the 使用/適用 at this 行う/開催する/段階, you should get the 権利 number for when the 使用/適用 was run... the number for the minutes past the hour when you ran it.

Just before the Good Stuff....

A little wrinkle: If I have 255 in a variable connected with "minutes past the hour", I want my 使用/適用 to 解釈する/通訳する that as "The time was unknown". (This is an example of a "rogue value"... a useful programming "trick".)

We're going to need a way to say, when the 使用/適用 is run without the "ini とじ込み/提出する 魔法", that we don't know when the 使用/適用 was 以前 run.

Just keep that at the 支援する of your mind... you'll use it in a moment.

Starting into "The Good Stuff"...

追加する 'IniFiles' to the code's "Uses" 条項. (近づく 最高の,を越す.)

And 追加する new stuff to the OnFormCreate handler until it looks like the に引き続いて. Don't 行方不明になる the

dfIniFile:TIniFile;//"df" in 指名する from "datafile". Could be anything.

.... in the "var" section.

手続き TLDN006f1.FormCreate(Sender: TObject);
var wHour, wMin, wSec, wMilli : Word;//Needed for DecodeTime
    dfIniFile:TIniFile;//"df" in 指名する from "datafile". Could be anything.
begin
  DecodeTime(now, wHour, wMin, wSec,wMilli);//Build into Lazarus and Delphi
      //"now" is a built in 機能(する)/行事 to 選ぶ up the 現在の time from your system.
  bThisOpening:=wMin;
  laThisOpening.caption:=inttostr(bThisOpening);

  //Heart if reading from ini とじ込み/提出する
  dfIniFile:=TIniFile.Create('LDN006ini.txt');

  with dfIniFile do begin
     bPrevOpening:=ReadInteger('以前','Opened At',255);
     end;//with...

  dfIniFile.解放する/自由な;
//End of "Heart of...."

//Now use what you read....
  if bPrevOpening=255
    then laPrevOpening.caption:='No 記録,記録的な/記録する of previous 開始'//no ; here
    else laPrevOpening.caption:=IntToStr(bPrevOpening);

end;//FormCreate

If you run this, you should get a sensible result. Click the "x" at the upper 権利 to shut your 使用/適用 負かす/撃墜する. Wait a minute. Try again. You should get a different number... but the "Minute of hour of previous 開始:" label still says "No 記録,記録的な/記録する of previous 開始". Of course it does! The computer only does what you told it to... not what you have in mind to make it do. So. How do we make it "remember"? (Don't worry yet about why what we've done 作品! But do 残り/休憩(する) 保証するd: It is okay to run this program even if you don't have a とじ込み/提出する called LDN006ini.txt on your hard 運動!)

Before we talk about saving ini とじ込み/提出する....

In a moment, I'll show you how to make your 使用/適用 create, or re-save, as need be, its ini とじ込み/提出する. Just before that, a necessary 詳細(に述べる), if what we are doing is going to work.

Remember: The ini とじ込み/提出する is meant to be keeping 跡をつける of when the most 最近の 開始 of the 使用/適用 took place. We almost have it 報告(する)/憶測ing when the previous 開始 took place. Now we have to 始める,決める the 行う/開催する/段階 for saving this instance of 開始, so that it will be 利用できる next time.

Just after....

//Now use what you read....
  if bPrevOpening=255
    then laPrevOpening.caption:='No 記録,記録的な/記録する of previous 開始'//no ; here
    else laPrevOpening.caption:=IntToStr(bPrevOpening);
    

... at the end of the OnFormCreate handler, 追加する....

//Update the variable 持つ/拘留するing "when was previous 開始", so that it
//  反映するs THIS 開始. (We will save this in a moment.)
  bPrevOpening:=wMin;

Now we're ready for...

Saving for Next Time

Before we can "turn on" "save for next time", we need to check how the 使用/適用 is の近くにd. If you have a button, as I prefer to have, caption "やめる", which when you click it の近くにs things 負かす/撃墜する, the code that 遂行する/発効させるs should be "の近くに". Not "使用/適用.終結させる", which will also shut something 負かす/撃墜する. (But 終結させる doesn't 誘発する/引き起こす the FormClose event, which is where we are putting our "save things to ini とじ込み/提出する" code!).

Clicking the red "x", upper 権利 of window, will call a FormClose.

権利! With that 詳細(に述べる) taken care of...

With the 使用/適用 not running, click on a "boring bit" of the form. Go to the 反対する 視察官. (圧力(をかける)ing f11 should take you there.) Click on the "Events" tab. 二塁打-click on "OnClose".

That should bring up the 爆撃する for an OnFormClose event handler. Fill it in as follows...

手続き TLDN006f1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var dfIniFile:TInifile;
begin
 dfIniFile:=TIniFile.Create('LDN006ini.txt');
 with dfIniFile do begin

  WriteInteger('以前','Opened At',bPrevOpening);

  end;//with...
 dfIniFile.解放する/自由な;

end;

Again... that 作品 as you would want it to whether there is a pre-存在するing LDN006ini.txt or not. Hurrah!

Let's look at what we did...

That's pretty much "it". There are some 詳細(に述べる)s we'll look at in 予定 course, but the 核心 is in what we've done.

If the 使用/適用 is run at 35 minutes past the hour, the program above creates (so far!) a very small ini とじ込み/提出する, in the に引き続いて form...


[以前]
Opened At=35

公式文書,認める...

In each 事例/患者 (Reading from the ini とじ込み/提出する, 令状ing 支援する to it), we had a TInifile type variable called dfIniFile, and we did...

 dfIniFile:=TIniFile.Create('LDN006ini.txt');

 with dfIniFile do begin
  {{Some stuff}}
  end;//with...

 dfIniFile.解放する/自由な;

Reading from an ini とじ込み/提出する

The "some stuff" when we were reading from the ini とじ込み/提出する was...

bPrevOpening:=ReadInteger('以前','Opened At',255);

Working our way through the above....

bPrevOpening: This is a variable we are going to put something in.

ReadInteger: A built in 手続き, 供給するd to us by the IniFiles 部隊, which we put in the 名簿(に載せる)/表(にあげる) of 部隊s in the "Uses" 条項.

'以前': This 明示するs the section of the ini とじ込み/提出する to look in. Sections are defined by putting a word or words ("以前" in this 事例/患者) inside square brackets.

'Opened At': This will be the 指名する of the "重要な" within the section.

The third parameter, 255 in the example, is the value which will be used if the ini とじ込み/提出する you are looking at does not have the 明示するd 重要な in the 明示するd section. Until we'd written the code in the OnClose handler, which wrote the first copy of the ini とじ込み/提出する, there was no ini とじ込み/提出する, and thus no sections, and no 重要なs, and so bPreviously was 始める,決める to 255.

Saving to an ini とじ込み/提出する

Now we'll look closely at the "some stuff" used if saving to an ini とじ込み/提出する. In our example, we have...

WriteInteger('以前','Opened At',bPrevOpening);

WriteInteger: A built in 手続き, 供給(する)d from the IniFiles 部隊.

'以前': The section we want to 令状 to. If there is no [以前] section header in the ini とじ込み/提出する yet, one will be created

'Opened At': The 重要な we are going to 割り当てる a value to.

What ever is in the variable bPrevOpening is what will follow "Opened At="

Simples!

It really is that simple. Once upon a time, I went to 広大な/多数の/重要な lengths to see if there was an ini とじ込み/提出する already, before trying to work with it. Not necessary. The .Create and .解放する/自由な methods take care of all of that... If you take care of them. They must both be 現在の. You need one .解放する/自由な to "partner" every .create. (There's rarely any 推論する/理由 to 延期する doing the .解放する/自由な. Do the .create. Read or 令状 from/ to the ini とじ込み/提出する. And do the .解放する/自由な.

A 自白: I am not 確かな that the OnClose handler is 正確に/まさに the 権利 place for the code to 令状 支援する to the ini とじ込み/提出する. I think it is the place for it.

A 警告: If you are using a text editor to look at what is in the ini とじ込み/提出する, and maybe even tweak it as you work on the program, be careful to think about what is going on. It is 平易な, for instance, to 負担 the ini とじ込み/提出する into the text editor, run and の近くに the 使用/適用, and not realize that what the text editor is showing is what was (以前) in the ini とじ込み/提出する... which changed when you の近くにd your 使用/適用! One of the 推論する/理由s I like using Textpad is that it 警告するs you when things like this happen.

Beware... there is a weird thing I've never やめる got to the 底(に届く) of: It is almost as if there's some form of (武器などの)隠匿場所ing going on. You edit a text とじ込み/提出する in your text editor. You save the とじ込み/提出する. You 原因(となる) your 使用/適用 to re-read the ini とじ込み/提出する... but it doesn't see the changes you made. 解答: I think that as long as you の近くに your 使用/適用 before doing 外部の editing of the ini とじ込み/提出する, then, when you re-open your 使用/適用, it will 選ぶ up the changes you made.

For the 用心深い

In what I did above, I just sort of assumed that the system would put the ini とじ込み/提出する someplace sensible.

It would probably be best to explicitly put it somewhere 明確な/細部.

The easiest thing... which isn't a very good idea... is to put the ini とじ込み/提出する in your 運動's root directory. You would do that as follows....

 dfIniFile:=TIniFile.Create('C:\LDN006ini.txt');

 with dfIniFile do begin
  {{Some stuff}}
  end;//with...

 dfIniFile.解放する/自由な;

A better 代案/選択肢 is to put the ini とじ込み/提出する in the same folder as the .exe is in. The に引き続いて looks arcane, but it JustWorks, and, if you don't let it 脅迫してさせる you, is pretty 平易な to 分析する, too....

 dfIniFile:=TIniFile.Create(ExtractFilePath(使用/適用.ExeName)+'LDN006ini.txt');

 with dfIniFile do begin
  {{Some stuff}}
  end;//with...

 dfIniFile.解放する/自由な;

Reading, 令状ing other things

So far, we've only read and written integers.

There is also a ReadString and a WriteString 命令(する). They work just as the ReadInteger and WriteInteger.

There is also a ReadDateTime and WriteDateTime. It SHOULD have been possible to 令状 my example to show you the date and time that the とじ込み/提出する was last opened. Lazarus "understands" the words. But I couldn't get the に引き続いて to work...

dtPrevOpening:=ReadInteger('以前','Opened At',0);

"無" was going to be my rogue value, which would have gone into dtPrevOpening when the ini とじ込み/提出する was not yet 現在の. I couldn't get it to work. If you have better luck, please let me know that it Can Be Done.

Form's position and size

Just to 包む things up, here are the two bits of code you need, if you want the 使用/適用 to remember where you'd put it on the 審査する, how big you had it, from 死刑執行 to 死刑執行. Put each of these 封鎖するs just after the ReadInteger/ WriteInteger lines we already have in the code. (Put these new lines inside the "with" 封鎖するs in both 事例/患者s.)

  LDN006f1.最高の,を越す   :=ReadInteger('Position and size','最高の,を越す of window- from 最高の,を越す of 審査する',10);
  LDN006f1.left  :=ReadInteger('Position and size','Left',30);
  LDN006f1.高さ:=ReadInteger('Position and size','高さ',100);
  LDN006f1.width :=ReadInteger('Position and size','Width',500);

  WriteInteger('Position and size','最高の,を越す of window- from 最高の,を越す of 審査する',LDN006f1.最高の,を越す);
  WriteInteger('Position and size','Left',  LDN006f1.left);
  WriteInteger('Position and size','高さ',LDN006f1.高さ);
  WriteInteger('Position and size','Width', LDN006f1.width);

Yes... my first 重要な is a bit overdone. I 手配中の,お尋ね者 to show you that the 重要な can be different from the 指名する of the 所有物/資産/財産 the value is taken from.

Enjoy!

Ini とじ込み/提出するs can be tremendously helpful in some 肉親,親類d of programming. I am just finishing an 使用/適用 which fetches とじ込み/提出するs from sundry source folders, and makes copies of them to other, 目的地 folders. I use ini とじ込み/提出するs to keep 跡をつける of which folders are the 権利 folders to be fetched from/ written to. (The "権利" folders 異なる from one machine to another.)

Even if you only use an ini とじ込み/提出する to make the 使用/適用 remember where you want it on the 審査する, and how big, many 使用/適用s will be better for that "frill" 存在 現在の.

Some time ago, Microsoft tried to get us to give up ini とじ込み/提出するs. Microsoft 手配中の,お尋ね者 us to use the registry for such things. Now, for 確かな 職業s, the registry is wonderful. For small bits of housekeeping by minor programs.... and let's 直面する it, most of the things we 令状 for our own needs are minor... ini とじ込み/提出するs do a perfectly 適する 職業, without getting anywhere 近づく the registry, which is an area of your computer where you really do not want problems.

For extra credit

You don't need them, but you can embed comments in an ini とじ込み/提出する, if you wish.

The usual practice is to start each comment line with a semicolon...


;ini とじ込み/提出する for LDN006

[以前]
;記録,記録的な/記録するs minutes past hour 使用/適用 last opened.
Opened At=47

[Position and size]
;記録,記録的な/記録するs position and size of 使用/適用's form
最高の,を越す of window- from 最高の,を越す of 審査する=454
Left=49
高さ=65
Width=618

That's 罰金. You can type comments like that into an ini とじ込み/提出する, and save it, and they will still be there even after the 使用/適用 has opened and の近くにd the ini とじ込み/提出する a few times, even if it is changing some of the 重要なs' values. (The ini とじ込み/提出する 準備/条項s do いつか do irritating things with blank lines. (いつかs they are 追加するd, いつかs taken away.) (If you create a "blank" line by putting just a semicolon on the line, it won't be 削除するd.)

"But!", I hear you cry. "What if I want to embed comments in an ini とじ込み/提出する programmatically, if the 使用/適用 is creating one where there was no ini とじ込み/提出する before.

Sadly, there is no WriteComment(';My Comment') 命令(する).

Here's what you're going to have to do.... And it's a pity, because it "wastes" the ini とじ込み/提出する system's clever ability to 対処する, whether there's an ini とじ込み/提出する 現在の or not. But no 害(を与える) done, and you get to create an 初期の ini とじ込み/提出する, with whatever comments you want.

Before you get to the "dfIniFile:=TIniFile.Create('LDN006ini.txt');", you need to check to see if one already 存在するs. (There is a FileExists 機能(する)/行事.) If not, fill a 覚え書き (you'll have to put one on your form, but you can 始める,決める its "明白な" 所有物/資産/財産 to 誤った. 始める,決める "WantWordWrap" 誤った, by the way. (Do that programmatically in your OnFormCreate.)

And save the 覚え書き with the .lines.savetofile method.

Here's the code. It goes on a bit, but when you realize that if you've seen one .lines.追加する() line, you've seen them all, the に引き続いて isn't so terrible...

手続き TLDN006f1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var dfIniFile:TInifile;
    sTmp:string;
begin
 sTmp:='LDN006ini.txt';
 if FileExists(sTmp)=誤った then begin
    Memo1.lines.(疑いを)晴らす;
    Memo1.lines.追加する(';ini とじ込み/提出する for LDN006');
    Memo1.lines.追加する(';');
    Memo1.lines.追加する('[以前]');
    Memo1.lines.追加する(';記録,記録的な/記録するs minutes past hour 使用/適用 last opened.');
    Memo1.lines.追加する('Opened At=255');
    Memo1.lines.追加する('[Position and size]');
    Memo1.lines.追加する(';記録,記録的な/記録するs position and size of 使用/適用''s form');
    Memo1.lines.追加する('最高の,を越す of window- from 最高の,を越す of 審査する=10');
    Memo1.lines.追加する('Left=50');
    Memo1.lines.追加する('高さ=65');
    Memo1.lines.追加する('Width=620');

    Memo1.Lines.savetofile(sTmp);
    end;

 dfIniFile:=TIniFile.Create(sTmp);
 with dfIniFile do begin
  WriteInteger('以前','Opened At',bPrevOpening);

  WriteInteger('Position and size','最高の,を越す of window- from 最高の,を越す of 審査する',LDN006f1.最高の,を越す);
  WriteInteger('Position and size','Left',  LDN006f1.left);
  WriteInteger('Position and size','高さ',LDN006f1.高さ);
  WriteInteger('Position and size','Width', LDN006f1.width);

  end;//with...
 dfIniFile.解放する/自由な;

end;

A little "gotcha"....

Somewhere in the guts of the operating system, there is a system variable to define your "現在の directory". (And that may of may not overlap with the sort of thing you get if you call GetCurrentDir).

If there is any chance of your program "wandering off", and visiting different directories while it is 遂行する/発効させるing, then you should probably....

a) 始める,決める up a 全世界の variable which I am going to call sDrivePathNameOfIniFile.

b) 早期に in onFormCreate, do...

 sDrivePathNameOfIniFile:=ExtractFilePath(使用/適用.ExeName)+'LDN006ini.txt'

c) and then, any time you do a TIniFile.Create, 示す what and where the ini とじ込み/提出する is, 言及する to it with sDrivePathNameOfIniFile (存在 careful not to change the value in that anywhere. Wouldn't it be neat, if there were a way to "lock" a "variable" once you've filled it with a "constant"?! (Of course, you can use constants... if you know the value that will be needed at the time the code is written.)

End of first idea. 事柄 arising:

What if you want to run the 使用/適用, but under the 支配(する)/統制する of 多重の ini とじ込み/提出するs?

There are several ways to 肌 that cat. The simplest is to put the ini とじ込み/提出する in the 使用/適用's .exe's folder, and have several copies of .exe and of the .ini とじ込み/提出する, all in separate folders. Rather wasteful of disk space (not really a problem today, but a source of problems if you need to 任命する/導入する an 改善するd 見解/翻訳/版 of the .exe.)

You could use a 命令(する) Line Parameter (CLP) to pass the 指名する or 場所 (or both!) of the ini とじ込み/提出する to use.

I once used CLPs a lot... but then I "discovered" ini とじ込み/提出するs. They are Just Nicer.

But a CLP still has a 役割 to play... it can tell the 使用/適用 which ini とじ込み/提出する to use! (Or where to find the one you want used this time.)

To use a CLP, you have to invoke the 使用/適用 from a shortcut. If you go this 大勝する, you might also 令状 the code so that if no CLP were 現在の, the program would ask for the ini とじ込み/提出する path and 指名する interactively, if you didn't want to 令状 it so that the program just went to a default 場所 and 指名する.

You can 接近 the first 命令(する) line parameter with...

if paramcount>0 then
sCLP:=paramstr(1);

More on CLPs... in a rather 古代の, and perhaps いっそう少なく polished, Delphi tutorial on 命令(する) line parameters and the keywords paramcount and paramstr I wrote a long time ago.





Search across all my 場所/位置s with the Google search...

Custom Search
            力/強力にするd by FreeFind
  場所/位置 search Web search
場所/位置 地図/計画する    What's New    Search This search 単に looks for the words you enter. It won't answer "Where can I download InpOut32?"
広告 from page's editor: Yes.. I do enjoy 収集するing these things for you. I hope they are helpful. However... this doesn't 支払う/賃金 my 法案s!!! Sheepdog ソフトウェア (tm) is supposed to help do that, so if you 設立する this stuff useful, (and you run a Windows or MS-DOS PC) please visit my freeware and shareware page, download something, and 循環させる it for me? Links on your page to this page would also be 高く評価する/(相場などが)上がるd!
Click here to visit editor's freeware, shareware page.

Link to Lazarus Tutorials main page
How to 接触する the editor of this page, Tom Boyd






Test for valid HTML

Page has been 実験(する)d for 同意/服従 with INDUSTRY (not MS-only) 基準s, using the 解放する/自由な, 公然と accessible validator at validator.w3.org. It passes in some important ways, but still needs work to fully 会合,会う HTML 5 期待s.

AND 実験(する)d for  Test for valid CSS


One last bit of advice: Be sure you know all you need to about spyware.

. . . . . P a g e . . . E n d s . . . . .