Code-Beispiel
Align()
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | ytwinky | 20.10.2010 |
Die Funktionen RSet und LSet von FreeBasic sind ganz praktisch bei der Formatierung von Tabellen, deshalb habe ich sie für die praktische Anwendung mal zu der Function Align() zusammengefaßt und mit einem Beispiel versehen.
Das Beispiel liefert die Laufwerke, die am IDE-Controller angeschlossen sind und benutzt WMic, deshalb läuft es erst auf Rechnern mit installierter WMI.
WMic setzt natürlich voraus, dass der Benutzer mit Admin-Rechten angemeldet ist, da aber nur gelesen wird, stellt das Programm keine Gefahr dar..
#include "vbcompat.bi"
'+------------------------------------------------------------------------------------------+
'| Header: Bestimmen der Übergabeparameter' |
'| AnzeigeCheck:|Il1 sind Alt-0124, Großes i, kleines L, Eins „”᎙šñ¸=äöüßÄÖܱ©|
Const Author="wmGetIDE.Bas v1.0 ©2010 by ytwinky, MD"' |
'| (Tastenkombination: keine) |
'| |
'| Zweck : Anzeige der IDE-Controller-Konfiguration mit Wmic(braucht also Admin-Rechte) |
'+------------------------------------------------------------------------------------------+
Const Lf=!"\n"
Type IDERec
As String Caption, Role
End Type
'Copy from here..
Function Align(What As String, FieldWidth As Integer=11, How As String="r") As String
'©2010 by ytwinky, MD
Var Aligned=Space(FieldWidth), le=Len(What), Wie=IIf(How="", @"c", SAdd(How))
Select Case LCase(Left(*Wie, 1)) 'ignore lowercase
Case "r" 'it is ok to submit 'r' for 'Right', which is the default
RSet Aligned, What
Case "l" 'same with 'l' which aligns to the 'Left'
LSet Aligned, What
Case Else 'now there's only center left
LSet Aligned, What
If le<FieldWidth Then Aligned=Left(Space((FieldWidth-le)\2) &Aligned, FieldWidth)
End Select
Return Aligned
End Function
' to here and place it wherever you like..
Var z="", s="Laufwerke am IDE-Controller vom " &Environ("Computername"), c=""
Var DNr=FreeFile, p=0, t=0, n=-1, PfadName="diskdrive Where ""InterfaceType='IDE'"""
Var Parameter="ScsiPort,ScsiTargetID,Caption"
Dim IDE(2, 2) As IDERec, Role(2) As String={"Master", "Slave"}
Open Pipe "C:\WINDOWS\System32\Wbem\wmic.exe " &PfadName &" Get " &Parameter &"/value" For Input As #DNr
While Not Eof(DNr)
Line Input #Dnr, z
t=-1
If InStr(LCase(z), "caption") Then c=Mid(z, InStr(z, "=")+1)
If InStr(LCase(z), "scsiport") Then p=Val(Mid(z, InStr(z, "=")+1))
If InStr(LCase(z), "scsitargetid") Then t=Val(Mid(z, InStr(z, "=")+1))
If t>=0 Then
IDE(p, t).Caption=c
IDE(p, t).Role=Role(t)
EndIf
Wend
Close #Dnr
Open Pipe "C:\WINDOWS\System32\Wbem\wmic.exe cdrom Get " &Parameter &"/value" For Input As #DNr
While Not Eof(DNr)
Line Input #Dnr, z
t=-1
If InStr(LCase(z), "caption") Then c=Mid(z, InStr(z, "=")+1)
If InStr(LCase(z), "scsiport") And Right(z, 1)<>"=" Then p=Val(Mid(z, InStr(z, "=")+1))
If InStr(LCase(z), "scsitargetid") And Right(z, 1)<>"=" Then t=Val(Mid(z, InStr(z, "=")+1))
If t>=0 Then
IDE(p, t).Caption=c
IDE(p, t).Role=Role(t)
EndIf
Wend
Close #Dnr
s+=Lf &"IDE-Kanal Funktion Bezeichnung"
If IDE(0, 0).Role<>"" Then
s+=Lf &Align("1", 10, "") &Align(IDE(0, 0).Role, 9, "l") &Align(IDE(0, 0).Caption, 30, "l")
EndIf
If IDE(0, 1).Role<>"" Then
s+=Lf &Align("1", 10, "") &Align(IDE(0, 1).Role, 9, "l") &Align(IDE(0, 1).Caption, 30, "l")
EndIf
If IDE(1, 0).Role<>"" Then
s+=Lf &Align("2", 10, "") &Align(IDE(1, 0).Role, 9, "l") &Align(IDE(1, 0).Caption, 30, "l")
EndIf
If IDE(1, 1).Role<>"" Then
s+=Lf &Align("2", 10, "") &Align(IDE(1, 1).Role, 9, "l") &Align(IDE(1, 1).Caption, 30, "l")
EndIf
Print s;
GetKey
Das Beispiel können nur Windows-Benutzer ausführen, die Function Align() sollte aber auch
auf linux-Systemen funktionieren..
Fröhliches Alignieren
Gruß
ytwinky
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 20.10.2010 von ytwinky angelegt.
- Die aktuellste Version wurde am 20.10.2010 von ytwinky gespeichert.
|
|