AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Listbox: Inhalt formatierter Zeilen auf Variablen verteilen
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox: Inhalt formatierter Zeilen auf Variablen verteilen

Ein Thema von Silentium · begonnen am 11. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Silentium

Registriert seit: 12. Okt 2004
Ort: Berlin
7 Beiträge
 
Delphi 2005 Personal
 
#1

Listbox: Inhalt formatierter Zeilen auf Variablen verteilen

  Alt 11. Okt 2006, 11:53
Morgen Leute,
ich habe folgendes Problem: Ich habe in einer Textdatei mehrere Zeilen an Text stehen, der so formatiert
ist:

Spanische Vokabel [TAB] deutsche Vokabel

Diese Textdatei lade ich in eine Listbox. Nun möchte ich, mit Hilfe eines Algorithmus, von einer
zufällig aufgewählten Zeile die spanische Vokabel in eine Variable, die deutsche in eine andere Variable
geschrieben haben.
Meine Idee dazu:

Delphi-Quellcode:
...

type
  TStringArray = Array[0..1] of string;

...

function Zufallsaufgabe(ListBox:TListBox):TStringArray;
  var zufallszahl,Listboxzeilen,i:integer;
      zeile,spanisch,deutsch:string;
      nochspanisch:boolean;
      return:TStringArray;
  Begin
    randomize;
    nochspanisch := true;
    deutsch := '';
    spanisch := '';

    listboxzeilen := Listbox.Count;
    zufallszahl := Random(listboxzeilen-1);
    zeile := Listbox.Items.Strings[zufallszahl];

    for i := 0 to (length(zeile)-1) do begin
      if zeile[i] = chr(9) then //wenn dieses Zeichen TAB ist, dann folgt die deutsche Vokabel
        nochspanisch := false
      else begin
        if nochspanisch = true then
          spanisch := spanisch + zeile[i]
        else
          deutsch := deutsch + zeile[i];
      End;
    End;

    return[0] := spanisch;
    return[1] := deutsch;

    result := return;
End;

...

procedure TForm1.Button1Click(Sender: TObject);
  var aufgabe:TStringArray;
  begin
    aufgabe := Zufallsaufgabe(ListBox1);
    Edit1.Text := aufgabe[0]+' '+aufgabe[1];
end;
Mein Problem hierbei: Die Edit bleibt leer.
Bitte hülft mir

Danke im Voraus
Silentium
Jeder macht was er will, keiner macht was er soll aber alle machen mit
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:18
Hi,

Delphi-Quellcode:
RandomStr := ListBox1.Items[Random(ListBox1.Items.Count -1)];
Spanisch := Copy(RandomStr, 1, pos(Char(VK_TAB), RandomStr));
Deutsch := Copy(RandomStr, pos(Char(VK_TAB), RandomStr) + 1, length(RandomStr));
So geht es RandomStr, Spanisch und Deutsch sind String Variablen, die du in der Methode deklarieren musst. Auch solltest du z.B. im OnCreate Ereigniss des Formulars einmal Randomize aufrufen.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:21
Geht random nicht sowieso von 0 bis zum Wert-1, soll heißen ist das "-1" bei "ListBox1.Items.Count -1" nicht überflüssig?

edit: Rechtschreibfehler
Richard Mahr
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:22
Nein Random geht von 0 bis zum Wert des Parameters ... und bei einem Item in der ListBox ist Count = 1, aber die Referenz auf ein Item (ListBox1.Items[Index]) ist immer eins weniger (d.h. das erste Item wird mit 0 angesprochen), deswegen -1.

(Habe den Code nochmal editiert und getestet, jetzt geht er. Allerdings wird in meiner ListBox für einen Tabulator nur ein Viereckiges Kästchen angezeigt ...
@Silentium: Also wenn der Benutzer die Listbox sowieso nicht sehen soll - wovon ich ausgehe, da die Tabs doch sehr unschön aussehen -, würde ich eine TStringList zum Laden der Textdatei verwenden)
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:24
Hmm ich dachte random(256) bedeutet minimaler Wert = 0, maximaler Wert = 255
Richard Mahr
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:25
Meines Wissens nach ist in deinem Falle der Minimalwert 0 und der Maximalwert 256 ...
Und mein Code funktioniert auch, wenn sich nur ein Item in der ListBox befindet, also Random(0) = 0 sein muss ... daher wird es wohl so sein, wie ich es dachte ...
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Silentium

Registriert seit: 12. Okt 2004
Ort: Berlin
7 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:28
Danke, jetzt funktionierts. Werde mich zwar nochmal mit der Copy Funktion auseinandersetzen müssen, um's auch zu verstehen...

Danke für die Hilfe

Und wegen Random:

Random(12) heißt: min=0, max=12

Gruß Silentium
Jeder macht was er will, keiner macht was er soll aber alle machen mit
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:31
Zitat von Silentium:
Danke, jetzt funktionierts. Werde mich zwar nochmal mit der Copy Funktion auseinandersetzen müssen, um's auch zu verstehen...
Bitte ... Copy(Val, Von, Count) gibt "Count" Zeichen ausgehend von "Von" der Value "Val" zurück. Fals auch unklar: Pos(SubStr, Str) gibt die Position von SubStr in Str an.

Zitat von Silentium:
Und wegen Random:

Random(12) heißt: min=0, max=12
Ja musste ja so sein, sonst hätte mein Code mit nur einem Item in der Listbox gar nicht funktionieren können.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Silentium

Registriert seit: 12. Okt 2004
Ort: Berlin
7 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:34
Danke für die Info

Aber ne kleine Veränderung musste aber dennoch rein, damit das TAB nicht angezeigt wird:

Delphi-Quellcode:
RandomStr := ListBox1.Items[Random(ListBox1.Items.Count -1)];
Spanisch := Copy(RandomStr, 1, pos(Char(VK_TAB), RandomStr)-1);
Deutsch := Copy(RandomStr, pos(Char(VK_TAB), RandomStr) + 1, length(RandomStr));
Jeder macht was er will, keiner macht was er soll aber alle machen mit
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

Re: Listbox: Inhalt formatierter Zeilen auf Variablen vertei

  Alt 11. Okt 2006, 12:39
Ahja stimmt ... konnte ich nicht sehen, da das beim Spanischen in meiner Text MessageBox nicht zu sehen war.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz