DELPHI4Test2011ref
— UNIVERSUMS
HISTORIA | 2011V24 | en
produktion
| Senast uppdaterade version: 2011-07-06
innehåll · webbSÖK äMNESORD på
denna sida Ctrl+F
Välkommen till DELPHI4Test2011
ditt gratisprogram med
enkla basverktyg för bildhantering, grafritning och textsökning
———————————————————
av BellDharma Jul2011
Enhetsåtkomsten för
sökverktyget
Skärmdumpar i sammanställning från 24Maj2011
DELPHI4Test2011, enhetsåtkomst för
sökverktyget
i 4 olika Windows operativsystem
Exempel från artikelförfattarens egna datorer
[MARKÖRPILEN förminskad har lagts till i
efterhand för att visa markörens position]
»AccessLogo» INDIKERAR att enheten är KLAR
[den innehåller lagringsmedia — kort, disk, diskett].
— DELPHI4Test2011 känner automatiskt av och
uppdaterar [1 gång i sekunden] drivenhetsdisplayen om man insätter [AccessLogon
visas]
eller avlägsnar [AccessLogon tas bort] något lagringsmedium i
respektive enhet.
— Man aktiverar/avaktiverar DriveSelect med D, markerar enheterna med den löpande
orangePilen, den kopplar tangentbordets PilHöger/PilVänster som driver markören
i stegbeteckningarna vågrät och orangepilen lodrät, man väljer med ENTER.
— Frånsett Windows XP originalet [inte ServicePack 2] med enhet A och Windows
Vista med kortenheterna G-J, ges inget avbrott med ENTER trots att inget
lagringsmedium finns inne; DELPHI4Test2011 visar endast ett textmeddelande i
statusraden av typen
![]()
Inga dialogrutor att klicka av. [Jämför
— däremot — Windows från Filutforskaren].
— För de övriga fallen [tom enhetA XP-original, tom enhetG-J Vista] kommer det
fram TVÅ dialogrutor [exakt lika »Windows — ingen disk»] som Windows kräver
måste klickas av om man ändå försöker med ENTER i DELPHI4Test2011.
|
operativsystem |
utseende —
DELPHI4Test2011, enhetsåtkomst för sökverktyget |
kommentar |
|
Windows 95 133 MHz |
|
— Äldre FloppyEnhet; — Den ger ifrån sig en mindre ljudmatta då
GetVolumeInformation läser av enheten — då ingen diskett finns inne. Annars tyst och fin. — En diskett bör finnas inne för att inte
diskettenhetsavläsningen ska fördröja pilningsfunktionen. — Påtagligt snabb programexekvering, trots den äldre
standardens (10ggr) lägre processorfrekvens. — Observera för Windows 95 att
bildskärmsinställningen måste vara True Color [32-bitar], annars fungerar
inte DELPHI4Test2011 [Access violation, fel filer öppnas i FindText]. |
|
Windows XP ServicePack 2 2,61 GHz DualCore |
|
XP ORIGINALET [PackardBell 1,5 GHz som höll i 6 tuffa år] visar
andra beteckningar [RQ...] samt kräver avbrottsdialog för A-enheten om ingen
diskett finns inne OM man ÄNDÅ trycker ENTER med A-enheten markerad. — FloppyEnheten ger mindre ljud ifrån sig om ingen diskett
finns inne då GetVolumeInformation körs. |
|
Windows Vista 2,8 GHz DualCore |
|
FloppyEnheter utgår kommersiellt från ca Windows Vista [2007].
Istället introduceras USB-minnen i allt större utsträckning [2010]. |
|
Windows [64bit] 7 2 GHz DualCore |
|
LapTop — WebTest |
Siffrorna 2-5 associeras med enhetsbokstäverna
— förklaras nedan i GetDriveType.
DriveComboBox1 är det som visas via
DELPHI4:s egen enhetskomponent — men den uppdaterar inte: programmet måste
startas om för att få senast färskt.
GetVolumeInfoAPI är resultatet av
programkod som utnyttjar GetVolumeInformation tillsammans med GetDriveType och en Timer som [1 gång per sekund]
garanterar att visningen alltid är färsk med datorns aktuella enheter — om man
sätter in något, eller avlägsnar något.
Nedanstående värden 0-6 returneras från
Windows API-funktionen GetDriveType
I:= GetDriveType(PChar(Drive+':\'));
med Drive som Char och typ Drive:= ’C’;
enligt
for Drive:= 'A'
to 'Z' do
case GetDriveType(PChar(Drive+':\')) of
2..6:
begin
...
end;
;
Följande returvärden gäller
(samplat från GetDriveType i Delphi4Hjälpen), se även på webben i MSDN [MicroSoft
Developer Network] om GetDriveType Function
http://msdn.microsoft.com/en-us/library/aa364939(v=vs.85).aspx
I Value Meaning kommentar
0 0 The
drive type cannot be determined. —
1 1 The
root directory does not exist. —
2 DRIVE_REMOVABLE The
drive can be removed from the drive. diskettenheten
(A)
3 DRIVE_FIXED The
disk cannot be removed from the drive. enhet
C, alla SlaveHårddiskar och deras partitioner
4 DRIVE_REMOTE The
drive is a remote (network) drive. server
5 DRIVE_CDROM The
drive is a CD-ROM drive. alla
CD/DVD/CD_READWrite-enheter
6 DRIVE_RAMDISK The
drive is a RAM disk. hårdvaruminneSpecial
ENHETSBOKSTÄVER | retursiffra 0-6 = TYP
TYP 2 särbehandlas [enligt specificerat filsystem],
övriga efter samma mall
Diskett
![]()
A B |
2:
Disketter brukar vanligtvis INTE ha särskilda
namn [fast man kan skapa sådana];
— En diskett finns helt säkert inne om
GetVolumeInformation visar dels ett serienummer samt ett namn på filsystemet av
typen FAT [eller NTFS, bägge för Windows].
— Finns inte filsystemstypen med, är A-enheten
nära helt säkert tom.
Hårddisk
![]()
C | 3:
Alla fasta enheter BRUKAR HA Namn — men
behöver inte ha det.
— Ett exempel är C:-enheten i Windows 7 från
köptillfället: Enheten visas C: [ ], dvs utan namn
[»Lokal disk» är namnet från fabriken, men det
syns inte; först när en namnändring görs visas något].
— Om inget namn finns angivet indikeras
»noAccess», vilket vi vet inte är korrekt;
— Vi KAN göra ett undantag för alla TYP3-enheter,
men (Jag) väljer här (enväldigt) istället följande:
— GE DEN FASTA ENHETEN ETT NAMN [Döp
efter DatorNamnet]. Då visas direkt »AccessLogon»,
![]()
![]()
D |
3...
Samma som ovan — men sekundära eller typ SLAVE
i förhållande till MasterC-enheten.
CD-DVD
![]()
E |
5...
CD-DVD-diskar Associeras i allmänhet med
NAMN-etiketter:
— Finns inget Namn, finns sannolikt heller
ingen disk inne.
Kort-Flash
![]()
F |
2...
MINNESKORT — inkluderat FLASHMINNEN
[USB-MINNEN] — brukar ha NAMN typ SD-kort [Kamera, typ NIKON], eller Kensington
för USB-typen.
— Finns inget namn för denna typ, är enheten
med största sannolikhet tom.
——————————————————————————————————————————————————————————
DET FINNS YTTERLIGARE TVÅ MÖJLIGA ENHETSTYPER
rem
| 4:
— Nätverksenhet.
Behandlas som TYP 3.
— Denna typ ansluter till möjligheter med
HögerKlick på Dator-enheten. Se exv. utförligt på webbsidan Server Intellect
http://www.serverintellect.com/support/windowsserver2003/mappingdrive.aspx
— Man anger enhetsbokstav, samt en SERVER [med
IP-adress] som kommer att tolkas som en lokal drivenhet på datorn.
ram
| 6:
— »RamDisk».
Behandlas som TYP 3.
— Samma som en Hårddisk — men utan mekanik.
Alltså [allokerat] hårdvaruminne.
Se beskrivning i @INTERNET Wikipedia RAM disk
2011-05-24,
http://en.wikipedia.org/wiki/RAM_disk
Enheterna och deras status i
Windows
Enheterna och deras status i Windows
I FilUtforskaren i Windows Vista (inte i
Windows XP eller tidigare) kan man MARKERA — utan att direkt välja — aktuell
lagringsenhet:

— Men trycker man ENTER med någon markerad enhet
som inte har något lagringsmedium inne för tillfället, visas olika typdialoger
som uppmanar en att »sätt in en disk»;

— Samma typ kommer fram i Windows XP (och
tidigare) DIREKT då man markerar en enhet eftersom Filutforskaren i detta
system också samtidigt utför ett enhetsanrop.
— Det betyder att (före Windows Vista) man
inte kan bläddra/låta markeringarna svepa bland datorns olika enheter — utan
att bli avbruten av typdialogen ovan; Man tvingas, manuellt, klicka av en
dialogruta.
Hur undviker man avklickningsrutorna —
programmässigt?
Webben [Se från SetErrorMode-syndromet] innehåller ett (större)
antal propåer från olika personer genom datorhistorien som observerat och påpekat
denna olägenhet — speciellt i programmeringssammanhang:
— HUR göra för att INTE uppväcka
avklickningsdialoger — bara för att man vill (mjukvaru-) kolla OM enheten HAR
något inne?
— Microsoft har aldrig löst det problemet;
— TILL EXEMPEL genom att använda en STATUSRAD
som hela tiden upplyser användaren om olika tillstånd som råder, men utan att
avbryta flödet (genom att ställa fram avklickningsrutor);
— Finns
inget inne, kan man bara hoppa över det (med en liten notis: »Finns inget
inne»).
— VILL man MEDGE särskild öppning, kan man
alltid som programmerare låta användaren köra Ctrl+ENTER.
— I programmeringssammanhang vittnar de
(många) olika webbinläggen om att »lucköppningssyndromet» är angeläget [Se från
SetErrorMode-syndromet];
— Hur man än bär sig åt, tycks man som
programmerare INTE kunna smita förbi »lucköppningvakterna». Försöker man t.ex.
[DELPHI4 och kompatibla] med
if DirectoryExists('A:\') then ...
— och ingen diskett finns inne i A-enheten —
kommer det fram en dialog som uppmanar att sätta i en diskett. Man tvingas
klicka av den manuellt.
— Det finns heller ingen DIREKT »mjuk» [icke
avbrytande] funktion i Windows som man kan använda för att testa OM typ
A-enheten alls har någon diskett inne. Det var det underliga.
— Jo, kanske någon (säkert) inflikar.
SetErrorMode.
— Se SetErrorMode-syndromet.
— Använd det gärna — om du vet, exakt, vad du
gör.
— VET du det inte — avstå.
INKLUDERAT: påtvinga inte andra
användare det ingen vet något om [genom att distribuera program med tvivelaktig
kod].
— Jag lyckades [2002] programmera sönder en
CD-RW-enhet i min Windows XP-dator med TEST på SetErrorMode: CD-RW-enheten kraschade
med ett tydligt hörbart kraschande ljud [som en hög med torra löv eller tomma
äggskal mellan händerna som sedan kramas ihop], tillsammans med ett tivoli av
ändringar i enhetsdelarna i FilUtforskaren och som du INTE vill veta något mera
om. Djupt olustig datorhängning. Sladd ur. Enheten måste bytas ut, datorn
startas om.
— Som programmerare, min rekommendation:
Använd med all makt inte SetErrorMode om du inte vet EXAKT vad du håller på
med.
Se vidare i Citat från Active
State Community och Delphi om SetErrorMode.
Bakgrunden till Enhetsvalen i Windows
HUR MAN STÄLLER IN ANDRA SÖKENHETER ÄN ENBART C:\
—
Kan DELPHI4Test2011 bara söka på hårddiskens huvudkatalog C:\?
Planera sökningen — särskild enhet
Det går inte att välja
enhet med FindText-boxen [F] framme i DELPHI4Test2011 — ta bort FindText-boxen
med Esc först. Ta sedan fram den igen med F — efter det att SetDrive avslutats
[med ENTER, D eller Esc].
— Först enheten som ska
sökas på [se DriveUnits], sedan FindText.
HELST SKULLE jag [programansvarig för
DELPHI4Test2011] BARA vilja svara »ja» på den frågan. Färdig. Puh.
— Jag rekommenderar DIG att [med all makt]
UNDVIKA ALLT ANNAT — i Windows.
Nämligen, så:
— Ända ifrån tiden för DISKETTERNA har Windows
operativsystem JÄVLATS
— se Enheterna och deras
status i Windows
— med att AVBRYTA ANVÄNDAREN MED
AVKLICKNINGSDIALOGER om ingen diskett fanns inne i enheten för tillfället:
»Sätt in en diskett i enheten A» — bara därför att man PROGRAMVÄGEN vill kolla
OM det finns något där.
— Den problemdelen finns också fortfarande
kvar i Windows: den löstes aldrig.

Hur Windows Vista svarar om man försöker välja
en [minneskort-] enhet som för tillfället inte har något lagringsmedium inne.
— Jag har sett det nyligen
för första gången, ett unikt tillfälle: Vid ett tillfälle [helt nyligen
Maj2011] kom INTE avbrottsrutan ovan fram, trots en markerad och vald [ENTER]
tom minneskortenhet.
— Windows operativsystem:
99% på visst sätt, 1% annat. Okänt ursprung.
I DELPHI4:
— Utan ett TryExceptEnd-block genererar också
DELPHI själv en avbrottsdialog av formen

om man kör ENTER på någon av enheterna med
tomma rakparenteser [typ DVD-CD-enheter som det inte finns någon skiva i].
Något annat avbrott för dessa fall har [här i min Windows Vista-dator] inte observerats.
Med ett TryExceptEnd-block [som i statusraden i DELPHI4Test2011 talar om att
enheten är tom] elimineras det avbrottet.
— Däremot genererar Windows [Vista] själv via
markeringar från FilUtforskaren [som ovan, Exception ...] särskilda dialogavbrottsrutor
för fallen med tomma minneskortsenheter.
Windows själv visar

om man trycker ENTER på markerad tom
kortläsningsenhet;
— Är enheten CD-DVD, öppnas luckan till
drivenheten, diskfacket matas ut och meddelande ges om att sätta in en disk.
— Det är snudd på ännu värre.
OM du/jag vill söka på andra enheter än
hårddiskens enhet [C:\], och vi vill vara helt säker på att sökprogrammet INTE
avbryts på grund av att det inte finns någon lagringsyta inne för tillfället
[diskett, CD, DVD eller minneskort], måste vi också — utan extra KOD —
tillförsäkra oss om att den enhet som sökningen ska göras på HAR ett
lagringsmedium instoppat. Annars bryts programflödet i sökningen med typen
[»Sätt in en diskett i enhet A»];
Inget mer händer förrän man klickar av den
rutan manuellt [eller som i Vista, två konsekutiva, exakt likadana].
— DET är jobbigt.
— I DELPHI4Test2011 har problemet lösts genom
en kombination av Windows API-funktionerna GetDriveType och GetVolumeInformation. Se utförligt från Enhetsåtkomsten
för sökverktyget .
Men det är också OREALISTISKT:
Med den numera enorma mängd data i form av
foton, videoklipp och annat som frodas på de olika lagringsenheterna, MÅSTE
NÅGOT motsvarande generellt sökningsverktyg OCKSÅ finnas — så att man i varje
fall ELEMENTÄRT kan söka på katalognamn, filnamn och även (i förekommande fall
genom särskilda önskemål) text i dokument på datorns samtliga enheter.
Genom vidare test och analys har
DELPHI4Test2011 utformats med den helhetslösning som beskrivs i Enhetsåtkomsten
för sökverktyget.
— Förutsatt att Du/jag är OBSERVANT PÅ den senast
valda enheten
— den står alltid nederst vänster i den lilla
ljusgröna panelrutan [Se DriveUnits]
— så att vi är säker på att det är samma som
vi TÄNKER börja söka på med referens till senast inlästa enhetskatalog
DELPHI4Test2011 startar
alltid med enheten C:\ vald medan UnitDirList.txt kanske innehåller den senast inlästa katalogen från enhet D ...
:
— Kolla (och dubbelkolla)
alltid FÖRST.
— ska det inte vara några problem i
DELPHI4Test2011 heller.
— Notera också att endast FULLtextSÖKNING
kräver en separat kataloginläsning [för exakt uppdaterad katalogstruktur] i
DELPHI4Test2011.
Se
vidare från FullTextSökning.
forts.frn. SetErrorMode
GetVolumeInformation
————————————————————————————————————
Webbreferenser (Maj2011)
finns bl.a. på:
http://65.39.72.142/Term.aspx?t=652019
; Klick på »view site» leder till
http://www.delphicorner.f9.co.uk/articles/wapi2.htm
http://www.delphipages.com/forum/showthread.php?t=9035
Det finns en annan väg i Windows API —
garanterat helt ofarlig:
— GetVolumeInformation kan ta fram (här
främst) tre avgörande data på aktuell enhet — utan att uppväcka några dialoger
som måste klickas av om enheten för tillfället saknar lagringsmedium:
namn, serienummer, filsystem.
(GetVolumeInformation returnerar False om inte
alla finns med).
— GetVolumeInformation-kommandot ger i sig
inget avbrott — i varje fall inte på de datorer jag har testat;
— Testade Windows 95 (New Tech) och Windows XP
(Packard Bell) med diskettenheten oladdad (ingen diskett inne):
— Det enda som märks är att de äldre diskettenheterna
ger smärre ljud ifrån sig (som en liten skrivare) då Infokollen anropar
enheten.
— Dock sker inget programavbrott: inga
klickaAvDialoger kommer upp — vilket sker om man försöker med koden i exemplet
längre upp.
Tillsammans med Windows API-kommandot GetDriveType kan man — utan avbrott —
få en nära 100%-igt säker förhandsbild av huruvida enheten är tillgänglig eller
inte.
— Så här är det upplagt i DELPHI4Test2011:
1.
GetDriveType samlar info om vilka
drivenheter/bokstavsbeteckningar som finns installerade på datorn, samt deras
status [0-6: hårddisk, CD-DVD, Diskett, Minneskort, osv.]
Resultatet av den operationen visas i
DELPHI4Test2011 nederst i programfönstret som [exempel från min Vistadator]
![]()
Informationen lagras i en TString, Drives
[bara enhetsbokstäverna] och en DriveX [samma form som i displayraden ovan];
2.
Därefter utförs kontroll och genomgång — för
varje enhetsbokstav [uDrve] —
var
A :
LongBool; {Check}
uName :
PChar; {Enhetens Namn}
uSeri :
PDWORD; {NotUsed · Enhetens SerieNummer, PointerDWord}
uAdrLenth :
DWord; {NotUsed · MaxFilNamnLängdsInfo}
uAdrFlags :
DWord; {NotUsed · FilSystemFlaggor}
uFiSy :
PChar; {Enhetens FilSystem}
begin
GetMem(uName, MAX_PATH);
GetMem(uSeri, MAX_PATH);
GetMem(uFiSy, MAX_PATH);
try
uDrve:= uDrve + ':\';
A:= GetVolumeInformation(
PChar(uDrve),
uName,
MAX_PATH,
uSeri,
uAdrLenth,
uAdrFlags,
uFiSy,
MAX_PATH);
sName:= StrPas(uName);
sFiSy:= StrPas(uFiSy);
if A=False then sName:='';
finally
FreeMem(uName, MAX_PATH);
FreeMem(uSeri, MAX_PATH);
FreeMem(uFiSy, MAX_PATH);
end;
end;{endGetVolInfo}
———————————————————————————————————————————
MAX_PATH, max 260 tecken
från Win32, se
http://support.microsoft.com/kb/245809
tillsammans med villkor för varje enhet på
datorn enligt
for I:= 1 to Length(Drives) do
begin
S:= Drives[I];
U:= sFiSy;
if Drives[I] in ['A','B'] then
begin
if sName <> '' then
{<Add[uName]>:}
begin
DriveStrings[I-1]:= Drives[I]+':
['+sName+']';
end
else
if
(Pos('FAT', U)>0) or
(Pos('NTFS', U)>0) or
(Pos('HPFS', U)>0) or
(Pos('AFS', U)>0) or
(Pos('HFS', U)>0) or
(Pos('MFS', U)>0) or
(Pos('ext', U)>0) then
{<Add[]>:}
begin
DriveStrings[I-1]:= Drives[I]+': []';
end
{<else add nothing>.}
else
begin
DriveStrings[I-1]:= Drives[I]+':';
DrivesAccess[I]:= '0';
end;
end {endIfFloppys [A|B]}
else
begin
case DriveX[3*I-1] of
'2':
begin
if (sName='')
then
begin
DriveStrings[I-1]:= Drives[I]+':';
DrivesAccess[I]:= '0';
end
else
begin
DriveStrings[I-1]:= Drives[I]+':
['+sName+']';
end;
end;
'3'..'6':
begin
if (sName='')
then
begin
DriveStrings[I-1]:= Drives[I]+':
[]';
DrivesAccess[I]:= '0';
end
else
begin
DriveStrings[I-1]:= Drives[I]+':
['+sName+']';
end;
end;{end3-6}
end;{endCase}
end;{endElse}
end;{endFor}
DriveStrings.Sorted:= True;
DriveStrings är en TStringList motsvarande
listningen i DELPHI4:s DriveComboBox [som tyvärr inte uppdaterar, därav den
extra koden ovan]: I DriveStrings skrivs motsvarande information in och som
sedan uppdateras (en gång i sekunden, som ovan) OM någon ändring sker på
datorns enheter [separat TimerBlock med villkor Senast-Nuvarande], och förutsatt
att SetDrive-läget gäller.
— DrivesAccess är en specialTextSträng
[»AccessLogon»] som initieras med alla ’1’:
— Enheten X betraktas som KLAR [logiskt ’1’]
att textsöka på OM den innehåller NamnSerienummerFilsystem från
GetVolumeInformation, annars inte tillgänglig [tilldelas logiskt ’0’].
— Undantaget är diskettenheten [A, B]: De
flesta disketter saknar NamnEtikett; Man kan [då] tillåta att enheten
klassificeras KLAR — men bara under förutsättning att FilSystemInfo ger
relevant uppgift;
Listan
ovan [FAT, NTFS, ...] ger de kända filsystemen [i Windows, Mac och
Linux].
Alla övriga enhetstyper kan betraktas som
KLARA om EnhetsNamn finns:
— Alla fasta datorenheter, hårddisken [med
inre partitioner, SlaveHårddiskar] brukar ha något EnhetsNamn från datorköpet;
Är så inte fallet, skapa ett namn så visas det i DELPHI4Test2011 inom
rakparentesen.
— CD-DVD-enheternas skivindivider brukar
vanligtvis AUTOMATISKT tilldelas någon specifik NamnEtikett från bränningen;
Finns ingen sådan etikett är enheten med största sannolikhet INTE klar för
textsökning;
— Alla minneskort [typ kameraminnen] och
USB-minnen brukar också ha redan givna namn från fabriceringen (som man kan
ändra); Finns inget namn, är enheten med största sannolikhet tom.
AccessGranted
Alla Enheter som bibehåller sin logiska 1:a i
DrivesAccess visar »AccessLogon» i formen av två (Björk) Löv,
![]()
De läggs intill resp. enhetsbeteckning i displayblocket
och indikerar [men utan att garantera] att dataenheten är KLAR för textsökning
i DELPHI4Test2011.
— Vilket betyder: Man kan välja den markerade
enheten med ENTER [helt säkert] utan att riskera att utsättas för
WindowsSystemets avklickningsdialoger med »det finns ingen disk inne, sätt in
...».
Två jämförande EnhetsListare i DELPHI4Test2011

Exempel från min VistaDator · 25Maj2011.
DriveComboBox1 [nedan, komponenten sådan den ser ut i DELPHI4] är DELPHI4:s egen [statiska] EnhetsKomponent. Den var tänkt från början
att vara det enda som skulle behövas. Det visade sig sedan att den blir
krånglig att få att fungera om Du/jag sätter in eller tar ut t.ex. ett
USB/FlashMinne. DELPHI4-komponenten är helt död för den typen.
Programexempel på webben
[DelphiKod] som visar hur man kan få DriveComboBox-komponenten uppdaterad FRÅN
ÄNDRINGAR I WINDOWS EXPLORER verkar inte finnas.
— Från programstart känner
DelphiKomponenten av vilka enheter som finns på datorn. Men ändras någon av
dessa under programkörningen, verkar det inte finnas någon mekanism i DELPHI4
som känner av ändringen.
— Komponenten reagerar inte
— om ingen speciell kod kommer till.
För att få visuell
bekräftelse, måste Delphiprogrammet avslutas och startas igen.
— Inte ens MED en separat
Timer [som anropar DelphiDrive-komponenten periodiskt] går det [här veterligt]
att få fram en ändring.
— Ämnet är å andra sidan
svårformulerat i direkt fråga — det kan finnas webbkällor dolda för mig som har
svaret.
[»reflecting explorer
changes in drivecombobox, delphi»]... Finns inte [Maj2011].
— Komponenten TDriveComboBox i DELPHI4
innehåller (i vilket fall de mera) föråldrade enhetsikoner typ nedan som inte
används i DELPHI4Test2011;

TDriveComboBox från DELPHI4 [2000] — Den
används gömd i DELPHI4Test2011 och
skrivs av med TextOut på Image1-bildytan.
DELPHI4Test2011-alternativet med DriveStrings
(höger ovan) visar hur samma grundinfo [dynamiska] fås via Windows API-kommandona GetDriveType och GetVolumeInformation tillsammans med en mera
direkt uppdaterande funktion [via separat TimerBlock] — med »AccessLogo».
Den automatiska 1-sekundersUppdateringen i
DELPHI4Test2011 kan stängas av/återinsättas med Ctrl+Shift+T. Är
Timerfunktionen avstängd fås DriveUpdate-funktionen manuellt genom att trycka
omväxlande på tangent D [varannanPÅ (orangePil) ger uppdatering].
Se
även mera utförligt från DriveUnits.
DelphiHjälpen på
GetVolumeInformation
DelphiHjälpen på GetVolumeInformation
”
Remarks
If you are attempting to obtain information
about a floppy drive that does not have a floppy disk or a CD-ROM drive that
does not have a compact disc, the system displays a message box asking the
user to insert a floppy disk or a compact disc, respectively. To prevent the system from
displaying this message box, call the SetErrorMode function with
SEM_FAILCRITICALERRORS.
”.
Det märkliga är att GetVolumeInformation inte
alls resulterar i några sådana, påstådda, beteenden.
— Särskilt kollat (24Maj2011) i Windows 95 och
Windows XP med tom enhet (ingen diskett inmatad i diskettenheten):
— GetVolumeInformation läser obehindrat, utan
avbrott, av enheten (A:\). No Problemo.
Däremot ges avbrott om man försöker på annat
sätt, typ
if DirectoryExists('A:\') then ...
— En dialogruta kommer upp som uppmanar att
sätta in en diskett om ingen finns inne.
— Så: Vad än DelphiHjälp-författaren hade i
åtanke med ovanstående, är det tydligen ingenting som gäller för
GetVolumeInformation-kommandot — åtminstone inte på de testdatorer som (ännu
idag Maj2011) står på mitt bord.
SetErrorMode-syndromet
Efter sökning på Webben 23Maj2011 »GetVolumeInformation, delphi code»,
med uppslag från [komplicerad webbsida:
skrolla neråt, flera artiklar finns på temat, välj »view site >>»]
http://65.39.72.142/Term.aspx?t=652019
http://www.delphicorner.f9.co.uk/articles/wapi2.htm
Copyright © 1995, 1996, 1997 Brendan V.
Delumpa All Rights Reserved.
Även — huvudet på spiken, ”How can i know if
there is disk in drive?” —
http://www.delphipages.com/forum/showthread.php?t=9035
Se även DelphiHjälpen
på GetVolumeInformation:
Angående SetErrorMode:
— Gör det inte — utförlig beskrivning nedan:
— Don’t.
— Don’t do it — unless you KNOW EXACTLY WHAT
YOU ARE DOING.
— I managed to CRASH [with a corresponding
real crashing sound when it gave up too] an entire CD-R-device in testing the
SetErrorMode-flags — with a corresponding »bad hang» of my Windows XP-computer.
I know [to be read: KNOW] what a worst case means.
— Try other ways (with all might — unless you
KNOW the System).
— See quotes below from a person who seems to
understand the issue [Quote from Nov 2004 ActiveState Community].
— SHORT: SetErrorMode is
intended for debugging purposes — by (already experienced, skilled) developers
who understand, or are trying to understand, the different THREADS inside
different processes of a (Windows) operating system. It is not intended to be
overridden in any general sense. DefaultMode is SetErrorMode(0) — nothing else,
se quotes below.
Delphihjälpen upplyser även beträffande
SetErrorMode:
”
Return
Values
The return value is the
previous state of the error-mode bit flags.
”, samt
”
Remarks
A child process inherits the error mode of its
parent process.
”.
— Som betyder: Det är omöjligt att veta på
förhand vad, exakt, som kommer in i X via typ
X:= SetErrorMode(<>);
— Det beror på hur operativsystemet för
tillfället arbetar, varifrån dess NU arbetande s.k. (process-)TRÅD kommer, och
vart den pekar (är på väg).
— Kort sagt: det blir OMÖJLIGT att veta något
SÄKERT med ovanstående typ X-lagring:
— Lägger man tillbaka samma X-innehåll EFTER
ETT MELLANSTICK (för »koll av drivenheter») är operativsystemet i princip
utlämnat åt sitt eget äventyr.
— Det KAN gå. Men det KAN också gå käpprätt åt
skogen.
— Och då vet INGEN.
Se Citat ActiveState
Community.
— Jag vill ändå säga det: VET DU EXAKT vad det
är du håller på med som programmerare, att inga som helst tvivel föreligger,
kan du givetvis bortse helt ifrån dessa varningsflaggor.
— SetErrorMode rekommenderas (bl.a. i
DELPHI4-hjälpen) för att kolla typ Floppy
— precis vad jag gjorde på WindowsXP-datorn
[PackardBell-version 2002] och som resulterade i en förstörd CD-enhet. Jag
vägrar in till ATOMEN utsätta andra personer för ens misstanken om något
liknande.
— Jamen om du istället hade
...
— Diskussionen är avslutad.
Det ska inte få förekomma något sådant: det ska inte gå att förstöra någon enhet på datorn, inte
alls överhuvudtaget, eller skapa något annat »feldike», genom att laborera med
datorns olika funktioner. Ett operativsystem
får inte innehålla någon sådan möjlighet. Aldrig.
Se även djupbeskrivning i »Is Disk in Drive?»,
”EMode := SetErrorMode(SEM_FAILCRITICALERRORS)
;”
http://delphi.about.com/od/beginners/a/floppy.htm
Se även (samma som min egen tidiga
observation) — hur man ÅTERSTÄLLER — beskrivs inte i DelphiHjälpen:
”Incomplete Description of SetErrorMode()
Function”
http://kbalertz.com/100305/Incomplete-Description-Function.aspx
Bidraget ovan påstår att man ska »skicka med
0» för att återställa — men utan vidare certifiering.
NOLLAN beskrivs (mera certifierat) också i Windows
API på webben för SetErrorMode [MSDN, MicroSoft Developer Network],
”SetErrorMode Function”
http://msdn.microsoft.com/en-us/library/ms680621(v=vs.85).aspx
Här finns ytterligare en som rekommenderar
»FEL» SETERRORDEFAULT:
”TDriveComboBox and IO error 21”
”OldErrMode :=
SetErrorMode(SEM_FAILCRITICALERRORS);”
(Jises).
Jämför:
OldErrorTHREADflagValue. Inte
»OldErrorMode».
— Flera webbare uppvisar samma FELFASON:
1.
Sampla upp »det gamla värdet» från WindowsSystem
enligt nedan — ErrorMode är en PROCESSBASERAD tillståndsform [Se Delphi om SetErrorMode], inte en per specifik
funktionsoperand: du vet ALDRIG [om du inte känner operativsystemet i detalj]
hur föregående feltyp kopplar till helheten; DVS., och i princip: Bjud in
ÄVENTYRET på datormiddag, för vidare:
OldErrMode :=
SetErrorMode(SEM_FAILCRITICALERRORS);
— FELET är att »OldErrMode» BLIR LIKA MED föregående
»SEM_FAILCRITICALERRORS»,
— Du måste veta SÄKERT att Windows får
tillbaka sitt normala KraschHanteringsTillstånd.
— Men hur kan du veta det genom att sätta dit
FÖREGÅENDE? Det stämmer inte — därför att Windows ErrorMode är en
PROCESSRELATERAD, inte en specifikt funktionsrelaterad, tillståndsform: den
kopplar i SYSTEM [beror av föregående, som i sin tur beror av ...]. Se Delphi om SetErrorMode.
— Det betyder att du inte kan veta säkert att
INTE en SÅDAN sättning införs i efterhand som innebär att Windows INTE
visar/upplyser om VISSA VITALA fel;
DelphiHjälpen skriver för den aktuella typen:
"
If this flag is set, the
operating system does not display the
critical-error-handler message box when such an error occurs. Instead, the
operating system sends the error to the calling process.
".
— Eller som bidragsgivaren ovan skriver i sin
DelphiKod:
2.
"
..finally
SetErrorMode(OldErrMode);
";
3.
— CRASH.
— Men det KAN gå på under LÅNG tid innan något
fel visar sig — eller kanske aldrig. Allt beror på omständigheterna.
Korrekt
återställning
— se Microsofts Windows API på SetErrorMode
http://msdn.microsoft.com/en-us/library/ms680621(v=vs.85).aspx
— är
»SetErrorMode(0);».
— Det återinsätter/visar Windows samtliga
feldialoger.
— Men, min rekommendation, för den som
NÖDVÄNDIGTVIS ANVÄNDER FUNKTIONEN I PROGRAMMERANDE TEST OCH för att vara på den
säkra sidan EFTER en sådan manipulation, eftersom ErrorMode är processrelaterat
[Se Delphi
om SetErrorMode samt Citat från Active State Community]:
— Starta om datorn. Annars är risken att
»hakningar» finns kvar som ev. i värsta fall allvarligt kan skada datorn eller
någon av dess enheter
— som det hände i mitt testande fall med en CD-RW-enhet [Windows XP 2002].
— På engelska: Better safe than sorry.
Kloka påpekanden — som en del (de flesta)
verkar strunta i
En person som tycks RÖRA vid sakens kärna
finns på webbstället
http://code.activestate.com/lists/perl-win32-users/25263/
"
...the program would not longer receive
automatic
alignment fault fixups and will
start crashing.
";
"
Note that the error mode is a process-wide
setting, not a per-thread
setting. This means that manipulating the
process error mode is not
something you should do
lightly, since it may have unintended consequences
for other threads (which you might not have control
over).
";
"
Of course, if you disable the crash
dialog,
then you also miss out on the
opportunity to retrieve crash reports
collected by Windows Error Reporting
so you can see where your program is crashing
in the real world.
";
Exactly my point.
"
Because the error mode is set for the entire
process, you must ensure that
multi-threaded applications do not set different
error-mode flags. Doing so
can lead to inconsistent
error handling.
";
Quote from Nov 2004 ActiveState Community.
Textfilerna i DELPHI4Test2011-katalogen
De olika TXT-filerna i
DELPHI4Test2011-katalogen
DATA.txt
Skapas villkorslöst vid första uppstart
FormCreate enligt
rad1 T.Add(IntToStr(GraphColor)); kurvfärgen (svart,
kan sedan ändras)
rad2 T.Add(IntToStr(CrossColor)); xy-färgen
(mörkgrå, kan sedan ändras)
rad3 T.Add(IntToStr(GridColor)); rutnätsfärgen
(ljusgrå, kan sedan ändras)
rad4 T.Add('Webber'); förberedande
för valfri WebbHjälpLäsare (kan sedan ändras)
T.SaveToFile('DATA.txt');
uRotDir.txt
Skapas villkorslöst vid första
CountNumberOfRootDirectories.
LastText.txt
Skapas villkorslöst vid första FormClose
enligt
S:=
ExtractFilePath(Application.ExeName);
T:=
'E[1]FindText|*';
if LastText <> '' then
T:=
LastText;
LTL.Strings[0]:= T;
LTL.SaveToFile(S+'LastText.txt');
Standard.txt, LastSearch.txt
Skapas villkorslöst vid första FormClose
enligt
if TS2.Count > 0 then
TS2.SaveToFile(S+'LastSearch.txt');
ListBox2.Items.SaveToFile(S+'Standard.txt');
LastSearch används [tillsammans med en inre
TStringlist TS2] för att synkronisera senast/föregående UnitDirList-inläsning.
Det betyder att LastSearch.txt och UnitDirList.txt kan innehålla samma data
[Hårddiskens hela katalogbild, runt ca 300 KB i Windows Vista med min
Vista-dator som exempel].
UnitDirList.txt
Skapas villkorslöst vid första
CountAllDirectories enligt
S:= ExtractFilePath(Application.ExeName)+'UnitDirList.txt';
if not FileExists(S) then
try
AssignFile(TF,S);
ReWrite(TF);
finally
CloseFile(TF);
end;
try
AssignFile(TF,S);
Reset(TF);
finally
CloseFile(TF);
end;
UnitDirList.SaveToFile(S);
Webbexempel på
ofullbordade helhetslösningar
FindWindowEx
Varken Delphi(4) eller något annat fristående
icke htm-baserat program kan öppna ett aktuellt htm-dokument (webbsida) och
samtidigt hoppa/skrolla htm-dokumentet till den inre dokumentadressen.
(Tyvärr).
— Webben har eftersökts på sådana lösningar,
men inget har (ännu Maj2011) hittats.
— Dokumentet som sådant kan dock öppnas från
DELPHI(4) — vilket dessvärre blir en meningslös handling om likväl inte den inre
länken kan nås (Som att öppna AB för att läsa EX).
TESTFALLET NEDAN innehåller viss prövning på
påstådd Delphikod som skulle kunna avläsa innehållet på en webbsidas inre
textboxar. Testet (på min Vistadator) visar att koden i varje fall inte ger
resultat i Windows Vista.
Med uppslag från
[casterqa] 2008
http://www.pinoyunderground.com/showthread.php?t=185731
http://www.pinoyunderground.com/showthread.php?t=181025&goto=nextnewest
:
Terminologi [ReBar CoolBar ComboBox32 ...]
http://msdn.microsoft.com/en-us/library/ms997549.aspx
Testfallen
Timerfunktionen (bakgrundsprogram) samplar upp programfönstret
[här Internet Explorer] med fokus och kollar dess fönsterinnehåll genom Windows
API-funktioner:
Timerfunktionen:
{var wP: PChar;}
wP:=StrAlloc(50+1);
try
GetClassName(GetForegroundWindow,wP,50);
Label1.Caption:= StrPas(wP);
if Label1.Caption = 'IEFrame' then
TestBrowser(GetForegroundWindow);
if
Label1.Color=C then
Label1.Color:=RGB(240,220,200) else
Label1.Color:=C;
finally
StrDispose(wP);
end;
;
Testproceduren:
Procedure TestBrowser(wChild:
HWND);
var
List :
TStringList;
I,A
: Integer;
S
: string;
begin
if wChild = 0 then Form1.Timer5.Enabled:= False;
List:= TStringList.Create;
try
for I:= 1 to 3 do
begin
case I of
1: S:= 'WorkerW';
2: S:= 'ReBarWindow32';
3: S:= 'ComboBoxEx32';
end;{endCase}
wChild:= FindWindowEx(wChild,0,PChar(S),nil);
if wChild = 0 {NotFound:} then begin
Form1.Timer5.Enabled:= False;
Form1.Label1.Caption:= 'NotFound: '
+ IntToStr(I);
Break;
end;
end;{endForI1to3}
finally
List.Free;
end;
end;{endTestBrowser}
Resultat:
![]()
Proceduren kommer inte förbi Nr3. Finns inget
»ChildWindow» till »ComboBoxEx32».
Källverken på webben som använder ovanstående »WorkerW,
ReBarWindow32, ComboBoxEx32» ligger alla runt epoken 2008 — en utpräglad
Windows XP-maskinpark. Ovanstående är testat på Windows Vista. Jag har inte
testat på Windows XP — och tänker inte göra det heller — en helhetslösning får
inte innehålla missar, som ovan, för något enda av de olika datorfallen.
Dessutom tillkommer paketet med andra webbläsare än Internet Explorer, och de
har andra komponentnamn.
Andra komponenter i t.ex. Firefox,
http://www.opensc.ws/source-code-help/6983-using-c-hwnd-get-active-browser-window.html
Den lösningsformen är (här) utesluten.
Det finns i varje fall en
webbkälla som rapporterar samma resultat:
http://lists.elists.org/pipermail/delphi/2008-July/030235.html
— Det finns också
alternativa förslag på de olika instanserna typ
»WorkerA»,
»Worker», »ComboBox», »WC_COMBOEX», och så vidare [i all oändlighet ...]. Men
ingen av dessa medför [min Windows Vistadator] någon förändring: processen
kommer inte förbi nr3. Därmed heller ingen tillgänglig lista på webbflikarnas
öppna webbfönster.
— Det finns dock
(åtskilliga) som verkar mena att det fungerar [på aktuella Windows XP-maskiner,
runt 2008]; webbsök på
»"hWndIEChild, 0, 'ComboBoxEx32', nil"».
— Tyvärr verkar
ämnet så diversifierat att någon enhetlig överblick inte går att formulera.
— Ännu värre blir
det med andra webbläsare än InternetExplorer. Se exv. omnämnandet i webbkällan
http://www.opensc.ws/source-code-help/6983-using-c-hwnd-get-active-browser-window.html
”childwindows are
MozillaDropShadowWindowClass, MozillaWindowClass”.
— FireFox, som
exempel, har helt andra komponentnamn.
— Och
(förmodligen) på samma sätt med övriga webbläsare.
— Det verkar inte
heller finnas någon ALLMÄN webbeskrivning som förklarar de olika webbläsarna
komponentnamn och hur man når dessa. Ämnet verkar ytterst [extremt] DIVERGENT:
svåråtkomligt, svårnavigerat.
— Möjligen menar
en del att ovanstående PROGRAMTYP som sådan inte ALLS är tillämplig. Det verkar
dock inte finnas någon direkt KLAR beskrivning i ämnet, endast antydningar [en
del tycks mena att helhetslösningen skulle bestå i en programmering på Windows
interna RegistryKey-arkiv (DDE).
Varför inte passa på att
utforma ett nytt operativsystem medan man ändå håller på?
Som sagt var: (extremt)
diversifierat].
— Uppgiften här
skulle BARA vara att få SAMTLIGA webbläsare att koppla/visa en given INRE LÄNK
genom att programmatiskt kunna nå URL-fönstrets inmatningsbox,
samt aktivera motsvarande ENTER. Webben innehåller här veterligt ingen
helhetslösning för det, samtliga webbläsare.
— ShellExecute i
Windows API klarar galant att öppna en viss webbsida via valfri webbläsare —
men inte att skrolla fram till en medskickad INRE (#) länk
(»...filnamn.htm#LÄNK») på den webbsidan.
— Det är
problemet. Kan man inte nå detaljer INUTI textmassan, är funktionen i princip
värdelös — detaljerade beskrivningar kan inte ges UTOM GENOM YTTERST
OMSTÄNDLIGA UPPDELNINGAR SOM GARANTERAT SÖNDERSTYCKAR VARJE FÖRSÖK.
— LÄNKNING
(friktionsfri ömsesidig kommunikation) verkar f.ö. vara programindustrins (hela
mänsklighetens) i särklass mest exceptionellt stora problem: Detaljer.
—
Tittar vi (2011) på TYP nyhetsWebbSidor (AB, EX, ...) ser vi att (här
veterligt) PRAKTISKT TAGET INGEN använder sig av INRE (#) länkar: Alla länkar
verkar koppla till separata htm-block — aldrig med referens till en INRE (#)
länk i DET blocket.
— Folk verkar helt okunniga
om den enorma potentialen i ämnet: detaljerade beskrivningar.
— Jämför
Konsekvensen: inte i någon enda artikel finns en ÅTERKOPPLANDE REFERENS, typ
»se början av artikeln från Start». Textflödet är STRÄNGT ENKELRIKTAT.
— Dubbelriktningar
verkar inte existera. Inte alls överhuvudtaget.
Utvecklingen av DELPHI4Test2011
Utvecklingen av DELPHI4Test2011
Upptäckten
[2007] att Windows Vista demolerar vissa funktioner i DELPHI4Test-originalet i
Windows XP, ledde tillsammans med en vidare genomgång — som visade problemens
lösning — fram till DELPHI4Test2011;
—
Windows Vista (och senare) vandaliserar och/eller hindrar vissa
Delphirutiner — lösningarna här inkluderade i Delphi4Test2011.
För
att förkorta den här manualen för DELPHI4Test2011 hoppas huvuddelen i den
beskrivningen över (ämnet blir extensivt och leder in på andra områden som
explicit inte berör manualen). Här ges endast en förkortad översikt i
sammandrag.
I
UNIVERSUMS HISTORIA omnämns (versalkänsligt) DELPHI (Maj2011) på
följande 4 ställen:

1.
MatElementarYtorna.htm#BorlandsPascal — allmänt om DELPHI
2. MatematikenEkvation2.htm#GRAFLÄRA — ”DELPHI 4
kompilerar inte i Windows Vista”
3.
REGISTER.htm#AllmäntOmWebbläsarnaApr2010 — beräkningsreferens
4.
UnivHistTidenJorden.htm#J_kroppens_allmänna_temperaturfunktion —
beräkningsreferens
samt
i
5.
http://hem.passagen.se/belldharma/MicrosoftExempel.htm — exempellistan med
Microsoft-felen
PROBLEMEN
MED WINDOWS VISTA och »administratörsbehörigheten» hindrade mig under lång tid
från att alls komma åt DELPHI-kompileringen (punkt 2 ovan): ”Hemligheten”
bestod i att högerklicka på typ skrivbordsikonen, välja Kör som administratör,
och sedan Tillåt ... . Det visade sig (då) att Windows Vista presenterade TVÅ
olika Delphi-versioner (!): den ena som såg ut som vanliga DELPHI och som inte
kunde kompileras, och den andra (»AdminVersionen») som gjorde det.
Bara med viss motvilja (och efter en längre tids stretande) accepterades den
ordningen. I efterhand har det visat sig att »AdminVersionen» helt kan fås att
övergå i en normal användning där man inte behöver genomföra »AdminRutinen» —
även med UAC (se nedan) aktiverat. Men Windows (Vista) är inte enkelt att
beskriva på den punkten annat än att det handlar om olika (gynnsamma)
inställningar i samband med att aktivera och inaktivera »UAC»;
START, Kontrollpanelen, Användarkonton, Aktivera eller
inaktivera Kontroll av användarkonto (UAC)
![]()
Windows
(Vista) verkar RIK på uppslag med beskrivningar av den typen — vilket också
leder till att den här beskrivningen TENDERAR att bli ypperligt EXTENSIV: det
kan aldrig vara den vanliga användarens avsikt eller uppgift att presentera
någon utförlig MANUAL för WINDOWS VISTA OPERATIVSYSTEM — men vi TVINGAS mer
eller mindre till det på grund av systemets olika beteenden.
Speciellt
Bildfelet och Katalogfelet omnämnt i punkt 5 ovan satte definitiva hinder i
vägen.
Först efter en ingående djupdykning i
DELPHI-koden (Apr2011), kunde dessa problem lösas;
![]()
Ovan, originalet från Windows 95, Windows
Vista
Nedan, demolerat i Windows Vista och Windows 7
![]()
Windows
Vista (och Windows 7) har SÅ märkliga sätt och TRIX för sig med
DELPHI-kommandot DRAW att det ÄNNU dyker upp djupt olustiga klippningseffekter
[som i skrivande stund förhoppningsvis, men inte säkert, är åtgärdade, testerna
fortsätter];
—
Medan DRAW accepteras på samtliga ställen av Windows 95 och Windows XP,
demoleras det på vissa, inte alla, ställen av Windows Vista och Windows 7, samt
ytterligare trixigheter som (ännu) är extremt svårformulerade på någon kort beskrivande
mening; med ersättning av DELS likvärdiga men mera omständliga COPYRECT och
DELS en kombination av de olika sätten ser det ut som att Bildfelet har
eliminerats (15Maj2011);
Katalogfelet [se även här i Kodexempel]:

Windows
Vista och Windows 7 tillåter inte ens att användaren läser av filnamn i vissa
kataloger: »File access denied» upplyser en rödkryssmarkerad dialogruta. För
att komma runt det avbrottet — som effektivt dödar varje försök att få ihop ett
fungerande sökprogram i Windows Vista och Windows 7 — måste speciella
EXCEPTION-rutiner testas och utformas som tar hänsyn till Windowsavbrotten
(mera utförlig beskrivning i Standard.txt). Först med dessa problem fullständigt lösta kunde nu
DELPHI4Test2011 utformas som det är presenterat här. Se vidare från DELPHI4Test2011.
Användning, Support och Installation — Anvisningar
· Manual
Användning, Support och Installation
Gå till Manualen på Webben — samma men fristående
@INTERNET
http://www.universumshistoria.se/AAALib/DELPHIHelp/HTM/DELPHI4Test2011.htm
Användning,
Support och Installation
Skiva
i DVD kan försena programstart. NOTERA FÖR UPPSTART AV DELPHI4Test2011 — och
alla andra fristående program som inte installeras via Windows Register: Finns
t.ex. en DVD-skiva i en av datorns DVD-enheter, kommer [eventuellt] enheten att
starta [men inte spela upp] med fördröjd uppstart av DELPHI4Test2011 — vilket
kan ta längre tid än nödvändigt innan programmet kommer fram på skärmen.
Situationen uppkommer bara vid första tillfället.
Reservation för
programfel — Access violation
Alla datorprogram
utvecklas för att INTE göra intrång på andra programs domäner — olika
minnesadresser som överskrids på grund av felaktigt eller bristfälligt skriven
programkod. Dagens operativsystem är utformade för att hålla koll på att ett
visst program håller sig till sin del. OM ett övertramp uppkommer, visas i
allmänhet en rödkryssmarkerad dialogruta av typen »Access violation at adress
...» med en OK-knapp. Felet än inte direkt allvarligt — det är bara att klicka
av via OK-knappen — men avbrottet visar samtidigt att programmet inte fungerar
korrekt.
Det har under utvecklingsarbetet med DELPHI4Test2011 förekommit åtskilliga AccessViolationavbrott och som upplyst om
olika fel i programkoden. Alla dessa har dock in till skrivande stund åtgärdats
— DELPHI4Test2011 är här [Jul2011] veterligt helt fritt från programkod som kan
åstadkomma AccessViolation-avbrott.
Jag kan dock inte garantera att brister i
programkoden INTE existerar — det kan finnas vissa (olyckliga) kombinationer av
programkod som »ligger och lurar» under lång tid och som, plötsligt, hoppar
fram vid något speciellt (olyckligt) tillfälle.
— Du måste vara helt klar över den punkten:
·
OM du tycker att DIN dator börjar uppföra sig underligt på allra minsta sätt i samband med användningen av
DELPHI4Test2011, eller
·
OM ett Access
violation-avbrott skulle visa sig i DELPHI4Test2011 på DIN dator
ska programmet avslutas.
Använd det inte — radera det från datorn.
Felet KAN (emellertid)
vara så originellt, att det bara visas EN gång — och sedan aldrig mera. OM ett
fel visar sig upprepat, efter omstart av programmet, är det min rekommendation
att du helt slutar använda programmet [för min del betyder samma situation
arbete med att reda ut och reparera felet] — se Avinstallation nedan: Programmet innehåller uppenbarligen fel och därmed,
frånsett det irriterande felmomentet, en potentiell källa för sämsta fallets
»ännu värre». Radera programmet från hårddisken. Använd det inte.
Användning
DELPHI4Test2011 får — som allt övrigt under
domänen UNIVERSUMS HISTORIA — användas endast för att främja ett fritt, öppet
och otvunget kunskapsutbyte mellan alla människor: utan hänsyn till ålder, kön,
ras eller ursprung, eller andra faktorer som gör åtskillnad mellan individerna
i mänsklighetens familj.
Utöver följande ges ingen särskild support
eller annan beskrivning eller information om programmets användning.
Grundformen till DELPHI4Test2011 utformades ursprungligen
i Windows 95 från DELPHI4 och har sedan dess använts i efterföljande
Windowsversioner Windows XP, Windows Vista, Windows 7 (64bitVersion). Med den
exceptionella stabilitet som programbasen har uppvisat nu under fjorton år och
i ljuset av den avgjort stora nytta som programblocken har uppvisat, vill jag
varmt rekommendera bekantskapen med DELPHI4Test2011 — OM du vill ha enkla,
grundläggande och effektiva verktyg för enklare bildhantering, grafritning SAMT en verkligt effektiv
textsökning.
Webben har — min mening — delvis visat sig
mindre upphetsande på gratisprogram i just dessa ämnen, datorstödd ELEMENTÄR
textsökning och bildhantering. Nu kan du själv kolla det påståendet för din
egen del — och jämföra med det allmänna utbudet. Flera exempel följer i den här
presentationen — med utförlig beskrivning på hur DELPHI4Test2011 fungerar.
INSTALLATION
Du som redan vet hur man
installerar från ZIP-filer kan hoppa över [det mesta] i följande:
DELPHI4Test2011 kan installeras och köras var
som helst på någon av datorns fasta enheter:
— Den här framställningen
förutsätter att DELPHI4Test2011 körs från någon av underkatalogerna på datorns
fasta huvudenhet [C:]. Se vidare installationsexempel nedan.
— OM programmet
installeras på någon annan enhet än C:\ kommer programmet inte att fungera
korrekt.
— Det är en ren
säkerhetsåtgärd för att helt undvika olika kopplingsfel mellan olika enheter
som används speciellt i textsökning.
— Installation och användning är helt gratis,
du riskerar inga avgifter, och får använda programmet så länge du vill och i
vilken omfattning du vill:
DELPHI4Test2011 har testats, fungerar och kan
köras i [med alla mellanliggande]
Windows
95, Windows XP, Windows Vista, Windows 7 [även 64-bitarsversionen]:
Det krävs inga särskilda registerblock eller
installationsrutiner — allt finns redan inbyggt i DELPHI med Windows
API-funktioner.
Notera särskilt för Windows 95:
DELPHI4Test2011 baseras på RGB-standard (TrueColor). Windows 95-monitorer
ligger/låg i gränslandet mellan den äldre och den nyare tekniken — flera
bildskärmsinställningar är möjliga. Dock är det bara med True Color [32-bitar]
som DELPHI4Test2011 kommer att fungera felfritt i Windows 95. Annars ges
typiska fel som »Access violation» och helt felaktiga filöppningar i FindText.
— Noteringen här är dock
förmodligen helt överflödig:
— Knappast någon använder
längre Windows 95. Dessutom är sökverktyget i Windows 95 redan så bra det kan
bli: söker redan på allt det som DELPHI4Test2011 kan. DELPHI4Test2011 har
emellertid också testats på min gamla Windows 95-dator — med felfri funktion
[men med tio ggr lägre CPU-frekvens], vilket endast understryker
helhetslösningen [DELPHI4Test2011 bör fungera i samtliga Windows
operativsystem].
DELPHI4Test2011 ligger inbakad i en ZIP-fil —
en länk [från särskilt ställe i UNIVERSUMS HISTORIA] leder dit och en dialog
öppnas (med Öppna eller Spara);
Om
du vill använda innehållet måsteZIP-filen sparas på datorn, och sedan packas upp (HögerKlicka
på ZIP-katalogen, välj Extrahera alla);
Delphi4Test2011 är inlagt i katalogen med
namnet ”DELPHI4Test2011” (vidare nedan i Uppackning);
Du kan behålla det namnet, eller ändra till
något annat;
Genväg — ett bekvämt sätt
Sedan du bestämt katalognamnet där
DELPHI4Test2011 finns med underkataloger, kan en genväg skapas till skrivbordet
[högerklicka på exe-filen och välj Skicka till Skrivbord] (och därifrån till
StartMenyn, om man så vill);
OBS:
Ändras katalognamnet sedan genvägen skapats bryts förbindelsen — genvägarna måste tas
bort och nya skapas;
Sedan är det bara att köra igång
DELPHI4Test2011.
En fjärilsikon [Gratis för icke-kommersiell användning] finns medskickad i DELPHI4Test2011-katalog som jag själv använder
som skrivbordsikon och även som huvudikon i programmet
[papillon-SZ.ico, av ZaKar — finns t.ex. på
http://www.veryicon.com/icons/application/shining-z/
NOTERA att nära samma fjärilsikon också finns
som Windows msn-ikon, Msn-Butterfly.ico, se
http://www.iconarchive.com/show/msn-buddy-icons-icons-by-nelson/Msn-Butterfly-icon.html
];
Du kan använda den (eller andra gratisikoner
från webben för icke kommersiell användning); byt ikon genom att högerklicka på
genvägen, välj Egenskaper och Byt ikon, med vidare.
Ikonen i
DELPHI4Test2011-fönstret går [f.n.] dock inte att byta för dig som användare.
TIPS: Vill du ha bort de fula genvägspilarna från skrivbordsikonerna
finns gratisprogrammet FXVisor på webben, men det
fungerar [Maj2011] inte i Windows 7 (64-bitarsversionen).
Teckensnittet Forte finns inte med i Windows 7 [och det är inte helt avgörande för
utseendet i DELPHI4Test2011]; det finns dock gratis att ladda ner från bravenet.
AVINSTALLATION:
Ta bort genvägarna, radera DELPHI4Test2011-katalogen [markera (Enter) och
tryck Delete];
Inga
omgivande datordomäner, register, eller andra detaljer påverkas;
DELPHI-program — de bygger helt på Windows
API-kommandon — är rent programtekniskt inte mera dramatiskt att ta bort (eller
installera) än en vanlig textfil; då den raderats, finns den inte längre. Finns
den, är det bara att öppna och läsa.
Notera:
DELPHI4Test2011-katalogen innehåller BMP-filer som
används av programmet internt och som du själv kan nå och kontrollera, samt en
del txt-filer [se Textfilerna] som programmet använder
internt, t.ex. i samband med kataloglistning vid textsökning. Ta inte bort någon av dessa filer. Fattas någon del,
kommer inte programmet att fungera korrekt.
Hur zip-filen importeras, packas upp och
raderas

·
Välj Spara på ÖppnaDialogen för DELPHI4Test2011.zip-filen;
·
Vi antar att den valda Sparkatalogen är Imports [se bilden ovan];
·
Efter ENTER ser katalogbilden ut som »Efter Importen», bilden
ovan;
·
Markera den intagna katalogen DELPHI4Test2011.zip, högerklicka
och välj Extrahera alla;
·
En dialog kommer upp med ett katalognamnsförslag TYP
”C:\ ... \Imports\DELPHI4Test2011”;
·
Den katalogen finns redan inskriven (antas förslaget kommer
kataloger i två efterföljande noder att få samma namn, det är OK men här
överflödigt);
·
Stryk ”\DELPHI4Test2011”, eller ange en egen plats, tryck ENTER;
·
Katalogbilden ser då ut som ovan i bilden Efter Extrahera alla;
·
Zip-filen kan nu tas bort, vilket ger slutresultatet längst till
höger i bilden ovan, Efter radera Importen.
·
SÖKVÄGEN till installationskatalogen visas i statusraden för
allmänna meddelanden nederst i DELPHI4Test2011 med musklick på programfönstrets
högra ramlist (om Shifttangenten hålls nere samtidigt skickas texten till
Urklipp, se Special)
·
Program som installeras utom registerhantering i Windows (Vista)
brukar (min dator) koppla ihop sig med typ DVD-enheten om det finns någon skiva
i: Försöker man öppna DELPHI4Test2011 (eller Paintbrush från Windows 3.1) med
en DVD-skiva i DVD-enheten, öppnar inte programmet förrän skivan börjar snurra.
Det gäller bara första gången. Avslutas programmet och startas igen, förlöper
allt som normalt.
Med kännedom om ovanstående PRINCIP blir det
enklare att planera hur man vill ha sin Import i förväg.
— Sedan katalogen extraherats kan den självklart
flyttas-kopieras-dupliceras till valfri plats. Det finns inga restriktioner på
den punkten.
Installation av DELPHI4Test2011 — se även från Anvisningar — men FÖRST din egen användargaranti:
Din
egen användargaranti för DELPHI4Test2011
DELPHI4Test2011 är avsett som en HJÄLP i
Ditt/mitt datorarbete — inte som felkälla eller shoppingcenter för förtret.
Upplever du minsta obehag eller tycker dig märka funktionsfel, brister eller andra
egenskaper som motverkar syftet att BERIKA ditt datoranvändande, måste du
omedelbart stänga programmet och inte använda det mer: ta bort installationen
enligt anvisningarna i AVINSTALLATION (radera installationskatalogen)
så att den inte längre finns på din dators lagringsmedia.
Min dator är inte din dator: Jag kan inte
garantera att min egen personliga datorupplevda positiva erfarenhet av
DELPHI4Test2011 också gäller för din datormiljö. Du måste vara helt klar över
att möjligheter finns i olika datorer med olika inställningar som KAN uppvisa
möjliga brister inför dina ögon, upphakningar eller andra negativa effekter som
jag själv aldrig kan se, hur mycket tester jag än utsätter programmet för, och
att det är den allmänna risk du alltid måste acceptera för att överhuvudtaget
ens kunna starta upp DELPHI4Test2011 — för ditt eget inledande acceptansTEST:
det är den allmänna riskfaktor som alla datoranvändare måste räkna med.
För
virusrisker och andra liknande intrång kan du för DELPHI4Test2011:s del känna
dig helt lugn: programmet innehåller bara ren DELPHI-kod (Borlands Pascal med
Borlands Turbo Assembler): virusdomäner existerar inte. Övriga filer är vanliga
bildfiler (bmp), pekare (cur), ikoner (ico), teckensnitt (fon, ttf) och
textbaserade datafiler (txt), de har tillsammans med exe-filen i
DELPHI4Test2011 genomscannats särskilt med Microsoft Security Essentials för
särskild viruskontroll av mig och befunnits helt rena.
Du måste tillförsäkra dig om att du fullt
och helt har förstått denna garanti — helst riva av en liten papperslapp och
skriva JA på den, och sedan riva sönder den i små bitar och kasta dem i
brännbart.— så att du i efterhand, om eventuella brister trots allt skulle visa
sig, FRÄMST inte anklagar dig själv för ett förhastat eller dåligt beslut, att
du kan möta alla konsekvenser med fast och lugnt sinnelag i ditt datorarbete
tillsammans med DELPHI4Test2011.
Är
du det minsta tveksam: avstå.
http://www.universumshistoria.se/AAALib/DELPHIHelp/HTM/DELPHI4Test2011.zip
[När installationsdialogen kommer fram, välj
Spara enligt anvisningarna i uppackning].
Exempel på [redan
kända] Underliga beteenden i Windows
Program som öppnas, öppnas ibland (inte
alltid) i bakgrunden
Observerat på mina Windowsdatorer XP, Vista
och 7
Webbreferenser [8Jun2011] där fenomenet
påtalas:
”programs open in the
background with hotkeys ”
http://www.sevenforums.com/general-discussion/116081-programs-open-background-hotkeys.html
Windows 7
”Application windows open
in background”
http://forums.cnet.com/7723-6129_102-63181.html
Windows 98
”Documents open in
background”
http://user.services.openoffice.org/en/forum/viewtopic.php?f=6&t=17570
Windows XP
...
Program som redan har fokus tappar det ibland
till ett annat program i programfönsterkön
Observerat särskilt [Windows Vista] i samband
med [växling till/från] Windows Media Player tillsammans med andra program —
men också på annat sätt [som ännu verkar mera knepigt att komma underfund med —
händer dock relativt sällan]
Webbreferenser [8Jun2011] där fenomenet
påtalas:
”FF 4 loses focus
sometimes”
http://groups.google.com/group/mozilla.support.firefox/browse_thread/thread/9d792492a86ada76
Windows XP
”Windows losing focus”
http://www.groovypost.com/forum/internet-browsers/windows-losing-focus-t96311.html
12Sep2010 — inget datorsystem omnämns
”Newly created modal
window loses focus and become inacessible in Windows Vista”
http://stackoverflow.com/questions/743713/newly-created-modal-window-loses-focus-and-become-inacessible-in-windows-vista
Windows Vista
Närmast ovanstående
webbreferens påtalar ett specifikt ”modal window” DELPHI-fenomen [speciellt
DELPHI 2006, en långt senare version än DELPHI4],
”The issue you have
started happening when Windows XP introduced the concept of window ghosting.
Due to the unusual architecture Delphi uses (all forms are children of a hidden
window — TApplication) many Delphi applications experience the same problem.”
”ShowModalWindow” betyder
samma som en dialogruta som visar sig och programmet inte kan fortsätta förrän
den rutan klickas av. Något liknande problem i DELPHI4 har mig veterligt aldrig
förekommit. Dialogrutor av »modal typ» finns också i DELPHI4Test2011 — inforutor
som upplyser i något viss avseende, t.ex. »Urklipp har inget bitmap» med »OK»
för att komma vidare. Inga som helst problem har i det avseendet (eller något
annat avseende) visat sig på mina datorer enligt min erfarenhet (alla testade,
Windows 95 | XP | Vista | 7).
...
ALLMÄNT
Vissa Program ställer till mera oreda än vad
som kan accepteras — Google DeskTop, iTune och Picasa är mina exempel; Ta bort
dem från datorn, använd dem inte med all makt och kraft, min mening: De lämnar rester,
stuvar om intill oigenkännlighet, hårdbelastar datorn [vilket tyder på
oskicklig programmering] ... KRÄV av programtillverkaren att redovisa MINIMALA
ENERGIANVÄNDNINGSEXEMPEL — som talar om HUR effektivt programmet utnyttjar
datorn rent STRÖMTEKNISKT. Se Energiexempel
1 och Energiexempel
2 till jämförelse.
Windows Applications
TECKENSNITT
som används I DELPHI4Test20xx
Lista över förekommande
Font.Name:s i DELPHI4Test-projektet — samplat8Apr2011
Century Gothic · Forte · LineaEF · Microsoft
Sans Serif · MS Sans Serif · Palace Script MT · Wingdings · Small Fonts · Symbol
· System · Terminal · Times New Roman · Verdana
Förteckning över
alla SCREEN.FONTS som finns på (Windows)
operativsystemet — i min Windows Vista-dator 256 stycken olika (alla som står i
Windows Fonts-katalogen — PLUS de som ev. inte syns där, t.ex. Terminal och System [med flera]) — fås i
DELPHI4Test2011 genom att skriva in FontDiagnostics i Ekvationsboxen [Tangent 0] och exekvera
med funktionstangent F11; en kopia av listan skickas till Urklipp; ta in den i
Anteckningar; Listan nedan (13 teckensnitt) ingår i F11-rutinen; förteckningen
visas längst ner i den nyligen beskrivna FontDiagnostics-listan, intill teckensnittsnamnet med ett tillägg ”Found”
(Funnen) eller ”NotFound” (InteFunnen) — för snabb översikt.
Century Gothic · Forte · LineaEF · Microsoft Sans Serif · MS Sans Serif
· Palace Script MT · Wingdings · Small Fonts · Symbol · System · Terminal ·
Times New Roman · Verdana
Förekomster med orange text inte direkt nödvändiga i
DELPHI4Test2011
|
teckensnitt |
bildexempel |
ev. webbdomän med gratis DownLoad [efter webbkoll 2011IV9 — andra KAN finnas] |
|
Century Gothic |
Detalj i utformningen till Numeriska Integraler |
verkar bara kunna KÖPAS — medföljde Windows |
|
Forte |
DELPHI4Test front m.fl. |
bravenet http://resources.bravenet.com/free_fonts/script/12 |
|
LineaEF |
[Under experimentell utformning, inte direkt aktuellt i
DELPHI4Test2011] |
verkar bara kunna KÖPAS — medföljde Windows |
|
Microsoft Sans Serif |
HELP |
verkar bara kunna KÖPAS — medföljde Windows |
|
MS Sans Serif |
FindText |
verkar bara kunna KÖPAS — medföljde Windows |
|
Palace Script MT |
[Under experimentell utformning, inte direkt aktuellt i
DELPHI4Test2011] Vä.: närmaste matchning till LineaEA [control], finns inte på datorn; Hö.: LineaEA finns. |
verkar bara kunna KÖPAS — medföljde Windows |
|
Wingdings |
FindEdit |
verkar bara kunna KÖPAS — medföljde Windows |
|
Small Fonts |
FindEdit |
verkar bara kunna KÖPAS — medföljde Windows |
|
Symbol |
Grafritningen |
verkar bara kunna KÖPAS — medföljde Windows |
|
System |
f.n. avställt [kan undvaras, ingår dock generellt från äldre
datorstandard] |
verkar bara kunna KÖPAS — medföljde Windows 3.1, Windows 95 |
|
Terminal |
Separat display till grafritningen | Numeriska Integraler |
verkar bara kunna KÖPAS — medföljde Windows 3.1, Windows 95 |
|
Times New Roman |
FindText |
verkar bara kunna KÖPAS — medföljde Windows |
|
Verdana |
Grafritningen |
bravenet http://resources.bravenet.com/free_fonts/script/12 |
Fonterna i tabellen ovan (utom orangemarkerade) och nedan finns
medskickade i katalogen Fonter till DELPHI4Test2011, de är kopior från mina
egna datordomäner som levererades tillsammans med de inköpta datorerna och som
legat till grund för programutvecklingarna.
Hittar du motsvarande
säker information som tillåter fri användning av aktuellt teckensnitt (genom
DownLoad — jämför min egen undersökning i tabellen ovan höger) kan du i så fall
med rent samvete kopiera den medsända delen direkt — eller ladda ner den själv,
samt sedan kopiera till Windows Font-katalog. Det garanterar att designen i
DELPHI4Test2011 visas korrekt.
[Flera källverk understryker vikten av att använda teckensnitt
på korrekt sätt (licensdetaljer), men det är inte lätt att hitta någon
heltäckande information om vad som gäller i de olika fallen].
Har man inte EXAKT de fonter som listas nedan på just sin dator,
i detta fall
Century Gothic · Forte ·
Microsoft Sans Serif · MS Sans Serif · Wingdings · Small Fonts · Symbol ·
Terminal ·
Times New Roman · Verdana
kommer operativsystemet att söka efter en närmaste matchning —
vilket KAN resultera i en verkligt deprimerande slutprodukt.
ASCII ANSI och OEM
ASCII ANSI och OEM
TECKENNOMENKLATURENS centralbegrepp
Från DELPI4-hjälpen [runt 2000],
”Responding to the OnKeyPress event”, och ”OEM
and ANSI character sets”: