Autor Beitrag
marvin521993
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 13:12 
Hi

ich habe jetz das grundprinzip der ini dateien verstanden

meine frage ist aber nun, wie ich dort die fragen für mein quiz mit einbauen kann?


LG
Marvin


Zuletzt bearbeitet von marvin521993 am So 11.02.07 20:04, insgesamt 1-mal bearbeitet
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 10.02.07 14:10 
Wenn du nur Frage/Antwort abspeichern willst, dann ist eine Ini-Datei ungeeignet. Ich würde da eine normale Textdatei nehmen. Du nimmst eine TStringList, mit der kannst du deine Textdatei laden und auch speichern. Sie könnte ja zum Beispiel so aussehen:
Zitat:
Was ist der Unterschied zwischen einer Bachstelze?#Sie hat zwei Beine, besonders das linke.
Was macht ein ***, wenn er seine Mülltonne mit heißem Wasser auffüllt?#Eine 5-Minuten-Terrine.

Du suchst jede Zeile nach dem # ab, und teilst somit die Zeile in Frage#Antwort auf.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 14:45 
danke chryzler genau sone antwort hab ich gebraucht

alle ham mir gesagt es ist besser ne ini datei zu nehmen

nnochma danke

LG
Marvin
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 15:13 
aber moment

wie hast du dir die text datei vorgestellt??

also vorne kommt die frage, dann eine raute und dann eine antwort möglichkeit, und wieder ne raute? oder wie

danke für deine hilfe

LG
Marvin
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 10.02.07 15:15 
Mach einfach das = als Trennzeichen, dann kannst du bei einer StringList mit Liste.Values auf den Wert zu einer linken Seite zugreifen...
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 17:46 
so eine textdatei habe ich jetz fertig ich habe sie unten reingestellt

Wie kann ich es nun machen, das der nach jedem = in ein neuen antwort button geht und bei einer neuen zeile in eine ganz neue frage?
Einloggen, um Attachments anzusehen!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 18:09 
versuchs mit Suche in: Delphi-Forum, Delphi-Library EXPLODE, ich glaube da wird man fündig. Ausserdem empfehle ich dir, ans ender der Zeile immer noch eine Zahl zu setzen, den Index der korrekten Antwort nämlich.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 18:12 
du meinst zum beispiel ne 2, wenn die erste antwort möfglichkeit richtig wär, ne 3 wenn die 2 und so weiter?
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 18:13 
ja, so in etwa.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 18:31 
aber meine andere frage steht immer noch offen mit dem explode kann ich nix anfangen sry

LG
Marvin
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 18:34 
user profile iconmarvin521993 hat folgendes geschrieben:
mit dem explode kann ich nix anfangen

Dann klick mal drauf :roll: dann kommst du unter anderem zu diesem Thema: www.delphi-forum.de/...mp;highlight=explode

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 18:48 
meinst du das möglicher weise so?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
begin
str := TStringList.Create;
str := ('c:\dokumente und einstellungen\Desktop\Delphi\Wer wird Millionär');



LG
Marvin
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 18:50 
Hast du dir die Mühe gemacht, den Link anzuklicken? :roll: Ich zitiere den für dich wichtigsten Post:
user profile iconSebastian R. hat folgendes geschrieben:
Also ich habe das Problem mit folgendem Quelltext gelöst.
ausblenden volle Höhe Delphi-Quelltext
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:
38:
39:
type
  TStringDynArray = array of string;

function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var
  SepLen: Integer;
  F, P: PChar;
  ALen, Index: Integer;
begin
  SetLength(Result, 0);
  if (S = ''or (Limit < 0then Exit;
  if Separator = '' then
  begin
    SetLength(Result, 1);
    Result[0] := S;
    Exit;
  end;
  SepLen := Length(Separator);
  ALen := Limit;
  SetLength(Result, ALen);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := StrPos(P, PChar(Separator));
    if (P = nilor ((Limit > 0and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5); // mehrere auf einmal um schneller arbeiten zu können
      SetLength(Result, ALen);
    end;
    SetString(Result[Index], F, P - F);
    Inc(Index);
    if P^ <> #0 then Inc(P, SepLen);
  end;
  if Index < ALen then SetLength(Result, Index); // wirkliche Länge festlegen
end;


Du kannst damit wie folgt deinen String unterteilen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure Test;
var
  exploded: TStringDynArray;
begin
  exploded := explode(' ''22 820 "Nam" 0 ');
  ShowMessage(exploded[0]); // zeigt '22' an
end;


Viel Spass, Sebastian.

Das ganze machst du nun mit jeder Zeile, als Seperator nimmst du # oder = je nach dem, wie deine datei aussieht.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 19:02 
acho sry wusst nich das dis so übertrieben kompliziert ist

mfg
Marvin
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 10.02.07 19:03 
Du kannst es noch einfacher machen, ohne Explode.
Zitat:
Was ist 3 + 4?
Drei
Fünf
Acht
Neun
Was ist Delphi?
Programmiersprache
Tier
Pflanzenart
Orakel

Dann bekommst du die n-te Frage durch:
ausblenden Delphi-Quelltext
1:
NteFrage := StringList[(n - 1) * 5];					

Und die vier Antworten zur n-ten Frage:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Antwort1 := StringList[((n - 1) * 5) + 1];
Antwort2 := StringList[((n - 1) * 5) + 2];
Antwort3 := StringList[((n - 1) * 5) + 3];
Antwort4 := StringList[((n - 1) * 5) + 4];

EDIT: Code korrigiert. Siehe nächster Post


Zuletzt bearbeitet von Chryzler am Sa 10.02.07 19:26, insgesamt 3-mal bearbeitet
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 19:12 
user profile iconChryzler hat folgendes geschrieben:
Zitat:

Was ist 3 + 4?
Drei
Fünf
Acht
Neun
Was ist Delphi?
Programmiersprache
Tier
Pflanzenart
Orakel

[ot]Leider ist Delphi der Ort eines Orakels, und keine Programmiersprache ;) ObjectPascal heißt die Sprache [/ot]
Zum Thema: Ja klar, so gehts auch, ist wesentlich simpler. Aber weist du, die Explode-Funktion musst du ja nicht verstehen, reicht ja, wenn du sie kopierst und einsetzt ;) Ist natürlich nicht Sinn der Sache.. aber naja :mrgreen:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 19:12 

kannst du mir da mal bitte die einzelnen zeilen vom quelltext erklären?

danke

lg
Marvin
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 10.02.07 19:17 
user profile iconChryzler hat folgendes geschrieben:

Dann bekommst du die n-te Frage durch:
ausblenden Delphi-Quelltext
1:
NteFrage := StringList[((n - 1) * 4) + 1];					

Und die vier Antworten zur n-ten Frage:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Antwort1 := StringList[((n - 1) * 4) + 2];
Antwort2 := StringList[((n - 1) * 4) + 3];
Antwort3 := StringList[((n - 1) * 4) + 4];
Antwort4 := StringList[((n - 1) * 4) + 5];

Klar ist ganz einfach. in deiner StringList befindet sich deine Datei. Du hast für jede Frage 4 antworten, also 5 Zeilen für jede Frage. Nun ists einfaches + und * rechnen: N ist die Zahl deiner Frage. wenn n=1 dann bekommst du bei
NteFrage := StringList[((n - 1) * 4) + 1];
ausblenden Quelltext
1:
((1-1) * 4) + 1					

ausblenden Quelltext
1:
(  0*4=0  ) + 1 =1					

Also die erste Zeile für die Frage. am ende ein +2 für die zweite zeile, die die erste antwort enthält. etc. bei n=2 bekommst du für die innere klammer 1 raus, damit 4 + 1, 4+2, 4+3 etc.
Einziger Fehler: Eine TStringList beginnt bei 0, nicht bei 1. also die Zahlen am ende (+1, +2 etc) um eins kleiner machen.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Sa 10.02.07 19:19 
user profile iconJayEff hat folgendes geschrieben:
Einziger Fehler: Eine TStringList beginnt bei 0, nicht bei 1. also die Zahlen am ende (+1, +2 etc) um eins kleiner machen.

omg, manchmal hab ich wirklich eine Mauer vor dem Kopf. :autsch:
Code oben ist korrigiert. Und noch mal korrigiert.


Zuletzt bearbeitet von Chryzler am Sa 10.02.07 19:27, insgesamt 1-mal bearbeitet
marvin521993 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 10.02.07 19:23 
und wie bau ich da die textdatei mit ein in die TStringlist?
hast du dir eigentlich ma meeine textdatei heruntergeladen?

LG
Marvin
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von marvin521993 am Sa 10.02.07 19:37, insgesamt 1-mal bearbeitet