Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Stringfunktionen

Align()

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Redakteurytwinky 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 Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 20.10.2010 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen