Tab Getrennter Text in Stringgrid bekommen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Tab Getrennter Text in Stringgrid bekommen

Beitrag von nevermore2k »

Hallo...

Langsam hab ich das Gefühl, das ich bisschen doof bin irgendwie.
Ich habe ein Consolen Output der sieht so aus ungefähr.

Code: Alles auswählen

0       module-device-restore
1       module-stream-restore
2       module-card-restore
3       module-augment-properties
4       module-switch-on-port-available
5       module-udev-detect
6       module-alsa-card        device_id="4" name="usb-046d_HD_Pro_Webcam_C920_C41F4BBF-02" card_name="alsa_card.usb-046d_HD_Pro_Webcam_C920_C41F4BBF-02" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
7       module-alsa-card        device_id="3" name="usb-C-Media_Electronics_Inc._USB_Audio_Device-00" card_name="alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
8       module-alsa-card        device_id="0" name="pci-0000_0d_00.1" card_name="alsa_card.pci-0000_0d_00.1" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
9       module-alsa-card        device_id="1" name="usb-Apogee_Duet_USB_CE00000000006A09-00" card_name="alsa_card.usb-Apogee_Duet_USB_CE00000000006A09-00" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
10      module-alsa-card        device_id="2" name="usb-046d_Logitech_StreamCam_48779F15-02" card_name="alsa_card.usb-046d_Logitech_StreamCam_48779F15-02" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1"
11      module-jackdbus-detect  channels=2
12      module-bluetooth-policy
13      module-bluetooth-discover
14      module-bluez5-discover
15      module-dbus-protocol
16      module-native-protocol-unix
17      module-gsettings
18      module-default-device-restore
19      module-always-sink
20      module-intended-roles
21      module-suspend-on-idle
22      module-console-kit
23      module-systemd-login
24      module-position-event-sounds
25      module-role-cork
26      module-filter-heuristics
27      module-filter-apply
28      module-x11-publish      display=:0 xauthority=/home/soul/.Xauthority
29      module-x11-xsmp display=:0 xauthority=/home/soul/.Xauthority session_manager=local/kde-manjaro:@/tmp/.ICE-unix/1574,unix/kde-manjaro:/tmp/.ICE-unix/1574
0       alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo      module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
2       alsa_output.usb-Apogee_Duet_USB_CE00000000006A09-00.analog-surround-40  module-alsa-card.c      s32le 4ch 44100Hz       SUSPENDED
10      alsa_output.pci-0000_0d_00.1.hdmi-stereo-extra1 module-alsa-card.c      s32le 2ch 44100Hz       SUSPENDED
0       alsa_input.usb-046d_HD_Pro_Webcam_C920_C41F4BBF-02.analog-stereo        module-alsa-card.c      s16le 2ch 32000Hz       SUSPENDED
1       alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo.monitor      module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
2       alsa_input.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.mono-fallback       module-alsa-card.c      s16le 1ch 44100Hz       SUSPENDED
4       alsa_output.usb-Apogee_Duet_USB_CE00000000006A09-00.analog-surround-40.monitor  module-alsa-card.c      s32le 4ch 44100Hz       SUSPENDED
5       alsa_input.usb-Apogee_Duet_USB_CE00000000006A09-00.analog-stereo        module-alsa-card.c      s32le 2ch 44100Hz       SUSPENDED
6       alsa_input.usb-046d_Logitech_StreamCam_48779F15-02.analog-stereo        module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
14      alsa_output.pci-0000_0d_00.1.hdmi-stereo-extra1.monitor module-alsa-card.c      s32le 2ch 44100Hz       SUSPENDED
0       module-systemd-login.c  (null)
3       protocol-native.c       plasmashell
6       module-x11-xsmp.c       (null)
8       protocol-native.c       kded5
9       protocol-native.c       firefox
11      protocol-native.c       firefox
16      protocol-native.c       firefox
67      protocol-native.c       pactl
0       alsa_card.usb-046d_HD_Pro_Webcam_C920_C41F4BBF-02       module-alsa-card.c
1       alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00      module-alsa-card.c
2       alsa_card.pci-0000_0d_00.1      module-alsa-card.c
3       alsa_card.usb-Apogee_Duet_USB_CE00000000006A09-00       module-alsa-card.c
4       alsa_card.usb-046d_Logitech_StreamCam_48779F15-02       module-alsa-card.c
Diese versuch ich eigentlich schon verzweifelt inzwischen... in einen TStringgrid unterzubringen, bei dem Jede durch jedes Tab getrenntes item in eine Column soll.. und bei der neuen Zeile natürlich dann ne neue row...

Das einzige, was ich hinbekomme ist, das alles komplett durch Tab getrennt untereinander aufgelistet wird...komme nicht weiter einfach...

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von Winni »

Hi!

Das TStringGrid besitzt doch folgende Procedure:

Code: Alles auswählen

procedure LoadFromCSVFile(AFilename: string; ADelimiter: Char=',';
      UseTitles: boolean=true; FromLine: Integer=0; SkipEmptyLines: Boolean=true);            
Schreib Deinen Konsolen-Output in eine Datei und lade die ins StringGrid.
Um die Anzahl der Colums musst Du dich nicht kümmern - die werden automatich angepasst.

In Deinem Fall ist ADelimiter #9.
Die anderen Parameter erklären sich wohl von selbst.

Winni

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 259
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von h-elsner »

Ich weiß ja nicht, wie deine Ausgabe vorliegt. Ich würde diese in eine TStringList laden und dann diese zeilenweise durchgehen, die Zeilen an den Tabs zerlegen und ins StringGrid einlesen.
Geht das nicht oder erscheint dir das zu umständlich?

Gruß HE

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von Winni »

h-elsner hat geschrieben:
So 16. Mai 2021, 19:07
Ich weiß ja nicht, wie deine Ausgabe vorliegt. Ich würde diese in eine TStringList laden und dann diese zeilenweise durchgehen, die Zeilen an den Tabs zerlegen und ins StringGrid einlesen.
Geht das nicht oder erscheint dir das zu umständlich?

Gruß HE
Hi!

Genau das macht LoadFromFromCSVfile.

Das muss man nicht händisch machen.

Winni

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von nevermore2k »

Winni, genau sowas hab ich gewollt :) loadfromcsv hab ich mir nicht angeschaut, da der Name für mich sagt, das nur comma seperated geht aber ich allerdings tabs hab. Daher wusste ich nicht das man den Delimiter einstellen kann.

HE so hab ich es versucht, allerdings kam ich nicht weiter dabei.


Code: Alles auswählen

procedure TForm1.Button5Click(Sender: TObject);
begin
  Process1 := TProcess.Create(nil);
  Process1.Executable := 'pactl';
  Process1.Parameters.Add('list');
  Process1.Parameters.Add('short');
  Process1.Options := [poWaitOnExit, poUsePipes];
  Process1.Execute;

  StringGrid2.LoadFromCSVStream(Process1.Output,#9,false,0,true);
  Process1.Free;

end;  
Das ist jetzt meine Lösung.

Wenn ich es jetzt noch hinbekomme das der erst bei Column 2 von dem Grid rein kloppt, und nicht direkt die erste nimmt für die Werte.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von Winni »

Hi!

Das ganze so einlesen, wie Du es machst.

Danach kannst Du Rows und Cols einfügen oder löschen nach Belieben.
Procedure hab ich nicht im Kopf.

Und Achung: Auch hier - wie fast überall - wird ab Null gezählt.

Winni

PS.

Code: Alles auswählen

procedure TStringGrid.InsertColRow(IsColumn: Boolean; Index: Integer);
procedure TStringGrid.DeleteColRow(IsColumn: Boolean; index: Integer);

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von nevermore2k »

Danke schön :)

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von nevermore2k »

aww man. wieso gibts kein selectedcell.value im stringgrid... oder getselectedcell.value... im TStringgrid... oder übersehe ich da wieder was ?

Hab es über globale variablen gelöst.. Aber naja ist halt nicht schön sowas irgendwie

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von Winni »

Hi!

Nicht so viel rumprobieren, sondern mal die Unit Grids durchlesen.

Code: Alles auswählen

Y := MyStringGrid.row;
X := MyStringGrid.col;
TheString := MyStringGrid.cells[x,y];
Winni

nevermore2k
Beiträge: 81
Registriert: Sa 1. Mai 2021, 15:39

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von nevermore2k »

Danke dir :) hab halt nach den falschen begriffen gesucht, aber ja ich werde die mir mal durchlesen.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Tab Getrennter Text in Stringgrid bekommen

Beitrag von wp_xyz »

Vielleicht solltest du auch wissen, dass es im wiki eine relativ umfangreiche Seite über die Grids gibt: https://wiki.lazarus.freepascal.org/Gri ... rence_Page

Antworten