i is not k
spacer
Autor Nachricht
Hasche
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 20.02.08 12:35 
Hey!
Ich erstell nen Prog wo ich 2 Button hab, die jeweils aus ner Txt Datei ein Wort auslesen (nach Zeile). Meine Frage ist allerdings, wie ich dem 2. Button sag, nicht die Zeile aus dem 1. Button auszulesen, heißt nicht das selbe Wort auszugeben.

i,k sind integer

Button 1: txt.Strings[i]

Button 2: txt.Strings[k]

wie kann ich nun sagen, dass i und k nicht gleich sein sollen? sowas wie i not k oder mit txt.Strings[..]?
über hilfe wär ich dankbar :)
tschuu lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mi 20.02.08 12:38 
Ich verstehe deine Problembeschreibung noch nicht so ganz.
Du möchtest, dass Button2 nicht das gleiche anzeigt wie Button1?

Wo werden i und k denn mit Zahlen belegt?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15843
Erhaltene Danke: 742

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mi 20.02.08 12:45 
Die Frage ist, woher der erste Button die auszulesende Zeile bekommt, aber du kannst jedenfalls ja eine Integer-Variable global deklarieren und dir darin merken, welche Zeile durch den ersten Button ausgelesen wurde. Dann kannst du im zweiten Buttonclick darauf achten eine andere Zahl zu nehmen.

Aber etwas Genaueres kann man da ja nicht sagen, wenn man nicht weiß, ob es zufällige Zeilen sein sollen oder bestimmte. etc.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
FiceGoesDelphi
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: Mi 20.02.08 12:58 
Also ich versteh das auch noch nicht so ganz.
Ich gehe jetzt mal davon aus, dass du den Variablen i und k IntegerWerte zuweist oder?
Wenn du denen die gleichen Werte zuweist, werden die beiden auch die gleichen Zeilen auslesen.
Sonst musst du denen halt verschiedene Werte zuweisen.
Oder du kannst sagen

Button 1: txt.Strings[i]

Button 2: txt.Strings[i + 1]

Somit gehst du auf Nummer sicher, dass es nicht die gleichen Zeilen sind.
Aber wir bräuchten schon ein paar mehr Informationen. Sind i und k Randomzahlen?
Initialisierst du die überhaupt?

_________________
<(^^<) <(^^)> (>^^)>
===================
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 20.02.08 14:04 
Hi
Ich denke mal schon, das i und k globale Variablen sind und wenn er nicht weiß, ob sie gleich sind, dann wird er sie schon irgendwo zufällig belegen, daher hab ich hier mal eine Abfrage
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
If i= k Then vergisses else
begin
  Edit1.Text;= txt.Strings[i];
  Edit2.Text;= txt.Strings[k];
end

im Angebot....
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 2544
Erhaltene Danke: 137

Windows 7 Home Premium
Visual C# 2010 Express
BeitragVerfasst: Mi 20.02.08 14:52 
oldmax hat folgendes geschrieben:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
If i= k Then vergisses else
begin
  Edit1.Text;= txt.Strings[i];
  Edit2.Text;= txt.Strings[k];
end

*räusper* Was soll denn der Mist? Tschuldigung, aber es geht auch wesentlich eleganter:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
if i <> k then
begin
  Edit1.Text;= txt.Strings[i];
  Edit2.Text;= txt.Strings[k];
end;
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mi 20.02.08 15:06 
Yogu hat folgendes geschrieben:
oldmax hat folgendes geschrieben:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
If i= k Then vergisses else
begin
  Edit1.Text;= txt.Strings[i];
  Edit2.Text;= txt.Strings[k];
end

*räusper* Was soll denn der Mist? Tschuldigung, aber es geht auch wesentlich eleganter:

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
if i <> k then
begin
  Edit1.Text;= txt.Strings[i];
  Edit2.Text;= txt.Strings[k];
end;

Hauptsache, man übernimmt den Fehler! =)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 2544
Erhaltene Danke: 137

Windows 7 Home Premium
Visual C# 2010 Express
BeitragVerfasst: Mi 20.02.08 17:36 
Xong hat folgendes geschrieben:
Hauptsache, man übernimmt den Fehler!

Ach du meine Güte :oops:

Sorry, da war ich wohl etwas zu schnell. Ich hatte auch nicht viel Zeit... ;)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 21.02.08 07:34 
hi
@Yogu
Na ja, Zeit für
Zitat:
*räusper* Was soll denn der Mist? Tschuldigung, aber es geht auch wesentlich eleganter:

war jedenfalls.
Nun ja, manchmal möchte man halt wissen, warum sich nix tut .... und dafür sollte die Procedure "vergisses" dienen. War vielleicht ein wenig zu anspruchsvoll gedacht. Dies mal nur so zur Erklärung....
Mfg
oldmax

_________________
Zier dich nich so, ich krieg dich schon....
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Hasche Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 21.02.08 13:04 
i und k sind globale integer variablen..

ich schreibe ein prog, dass verschiedene städte abfragt und die dazugehörigen pixelkoordinaten. die angaben dazu sind in txt dateien gespeichert. steht zb berlin in der 1. zeile, stehen die x und y koordinaten für berlin auch in der ersten zeile der x und y.txt datei.

button 1 ist der startbutton, button 2 der für die nächste frage.
jedoch darf von den städten keine nochmal abgefragt werden, somit müssten die zeilen, aus denen ausgelesen wird verschieden sein und nicht eine zeile zweimal abgefragt werden.

button1:

ausblenden volle Höhe Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure TForm1.Button1Click(Sender: TObject);
var
  txt: TStringList;
  temp: String;
begin
Label5.Visible:=False;

button1.Visible:=False;
button2.Visible:=True;

  txt:= TStringList.Create;
  txt.LoadFromFile('Stadt.txt');

  randomize;

  k:= random(txt.Count);

  Label4.Caption:= txt.Strings[k];

  txt.LoadFromFile('x.txt');
  x1:= StrToInt(txt.Strings[k]);

  txt.LoadFromFile('y.txt');
  y1:= StrToInt(txt.Strings[k]);

  bShape := TShape.Create(Self);
  bShape.Parent := self;
  bShape.Width := 4;
  bShape.Height := 4;
  bShape.Shape := stCircle;
  bShape.Brush.Color:=clRed;
  bShape.Brush.Style:=bsSolid;
  bShape.Top := y1;
  bShape.Left := x1;
  bShape.Visible:=false;

end;


button2:

ausblenden volle Höhe Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
procedure TForm1.Button2Click(Sender: TObject);
var
  txt: TStringList;
  temp: String;
begin

  txt:= TStringList.Create;
  txt.LoadFromFile('Stadt.txt');

  randomize;

  i:= random(txt.Count);

  Label4.Caption:= txt.Strings[i];

  txt.LoadFromFile('x.txt');
  x1:= StrToInt(txt.Strings[i]);

  txt.LoadFromFile('y.txt');
  y1:= StrToInt(txt.Strings[i]);

  bShape := TShape.Create(Self);
  bShape.Parent := self;
  bShape.Width := 4;
  bShape.Height := 4;
  bShape.Shape := stCircle;
  bShape.Brush.Color:=clRed;
  bShape.Brush.Style:=bsSolid;
  bShape.Top := y1;
  bShape.Left := x1;
  bShape.Visible:=false;

  txt.Strings[i] isnot txt.Strings[k];

end;
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15843
Erhaltene Danke: 742

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Do 21.02.08 13:08 
Erstens: Randomize gehört nur einmal ins FormCreate oder so.
Zweitens: Am Einfachsten (nicht optimal, aber das ist ja egal):
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
  // statt:
  i:= random(txt.Count);
  // einfach:
  i := k;
  while i = k do
    i:= random(txt.Count);
Sollte txt.Count allerdings nicht mindestens 2 sein gibt das natürlich ne Endlosschleife. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Hasche Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 21.02.08 13:18 
kann man nich einfach sagen, dass i nicht k sein darf, also die gleiche zeile? würd eich mir jetz am einfachsten vorstellen :)

ausblenden Delphi-Quelltext markieren
1:
2:
3:
  i := k;
  while i = k do
    i:= random(txt.Count);


tut doch nichts zur sache, dass eine zeile nicht 2x abgefragt wird oder? *nich duchblick* xD
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15843
Erhaltene Danke: 742

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Do 21.02.08 13:21 
Klar kannst du das sagen, aber woher willst du dann die zweite Zahl nehmen? ;-)

Die Schleife sucht so lange eine neue Zufallszahl bis diese nicht mehr gleich k ist. Und diese Zahl ungleich k liegt dann in i.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Hasche Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 21.02.08 13:27 
mh gibts ne möglichkeit, dass du dir das prog ma anguckst? ^^
ich glaub, wir reden ein bisschen aneinander vorbei xD
Einloggen, um Attachments anzusehen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
EE-Maler
Beiträge: 1754
Erhaltene Danke: 62

Windows XP
Delphi (2005 Bug Edition), Java (Eclipse), Haskell (ghci), C++ (Visual Studio 2010, Qt Creator)
BeitragVerfasst: Do 21.02.08 15:46 
du musst doch nur jeweils statt deinem aufruf von random eine Schleife daraus machen. :nixweiss:

Also einmal
ausblenden Delphi-Quelltext markieren
1:
2:
while i=k do
  i:=random(x);

und in deiner andren procedure
ausblenden Delphi-Quelltext markieren
1:
2:
while i=k do
  k:=random(x);

_________________
a broken heart is like a broken window - it'll never heal
Jen, [this computer] is infected. If this was a human being, I'd shoot it in the face. (IT Crowd)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15843
Erhaltene Danke: 742

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Do 21.02.08 15:49 
Was jetzt hier im Thread noch nicht steht: Wir haben uns via Messenger unterhalten. Das Problem ist, dass es nicht nur darum geht dies zu unterscheiden, sondern dass auch bei weiteren Klicks die ganze Sequenz eindeutig ist und nichts doppelt vorkommt.

Hier habe ich ein array of Boolean vorgeschlagen, dass die bereits abgefragten Fragen speichert.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home