Autor Beitrag
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 16:52 
Oh mann :/
Ich schaffs einfach nicht. Immer irgendwelche komischen Fehler. Langsam verzweifle ich :(

Ich muss im Prinzip nur wissen, wie ich 1#fisch#fish sowas auslese und in einem record speichere
Also eine ganze Textdatei mit mehreren solcher Strings...
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 19:20 
Zitat:
Immer irgendwelche komischen Fehler.


Wie jaenicke auch schon angemerkt hat: Wenn du uns nicht sagst, welche komischen Fehler bei dir auftauchen, können wir nur schlecht helfen. Der Code oben sieht korrekt aus und scheint zu funktionieren (jdf. bekomme ich die richtige showmessage ausgabe).

Für diesen Beitrag haben gedankt: Thunfisch
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 19:34 
wenn ich versuche die funktion aufzurufen kommt : Nicht genügend wirkliche parameter
Habe ich shcon gegoogelt und dort stand, dass man sich den quellcode nochmal ganz genau anschauen sollte
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 19:46 
Nicht genügend wirkliche parameter, sagt doch eigentlich was da fehlt, dir fehlt ein (oder mehrere) Parameter ;) Zeig mal wie du die Funktion im Quelltext benutzt.

Für diesen Beitrag haben gedankt: Thunfisch
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 19:52 
Ich hab es einfach so ausprobiert :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.b_testClick(Sender: TObject);


begin



   StrToVokabelInfo() ;

end;



Und wie kann ich eine einfache Abfrage gestalten von allen vokabeln die in der text datei liegen ?


Zuletzt bearbeitet von Thunfisch am Mi 29.06.11 20:01, insgesamt 1-mal bearbeitet
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 20:00 
Hast du die Funktion selbst geschrieben? In der Signatur steht doch, dass der du Funktion auch einen String als Parameter übergeben musst (dieser wird dann in ein TVokabelInfo umgewandelt). Also ungefähr so:

ausblenden Delphi-Quelltext
1:
StrToVokabelInfo('12#mutig#brave') ;					

Für diesen Beitrag haben gedankt: Thunfisch
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 20:02 
Und wie kann ich eine einfache Abfrage gestalten von allen vokabeln die in der text datei liegen ?

Aber kann ich da auch meine ganze vokabel list reinsetzen? also wenn ich die vorher in eine Tstringlist geladen habe
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 20:06 
Am einfachsten wäre es, wenn du alle Einträge der TStringlist durchgehst und für jeden Eintrag die Funktion aufrufst.
Achte aber drauf, dass du mit den Rückgabewerten der Funktion auch was anstellst, sonst sind die nämlich weg ;)

Für diesen Beitrag haben gedankt: Thunfisch
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 20:13 
Ja mensch cih hab total den Blackout

Wie wäre es mit :


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
 var
        testlist : Tstringlist;
        ShortSpeicher : array[3..,500..];

begin
       testlist := tstringlist.create   ;
        testlist.loadfromfile('vokabeln.txt') ;

For i := 1 to ID begin // Id hab ich vorher mal bestimmt 
   
  StrToVokabelInfo(testlist[i]) ;

ShortSpeicher[1,i] := testlist[i].ID;
Shortspeicher[2,i] := testlist[i].detusch;
Shortspeicher[3,i] := testlist[i].englisch;

end;


Ich bekomme immer, wenn ich StrtoVokabelinfo() aufrufe eine fehlermeldung: [Fehler] Unit1.pas(275): Inkompatible Typen: 'String' und 'TStringList'
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 20:25 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 var
  i:integer;
  testlist : Tstringlist;
  ShortSpeicher : array[0..500of TVokabelInfo;

begin
  testlist := tstringlist.create   ;
  testlist.loadfromfile('vokabeln.txt') ;

  For i := 0 to testlist.count-1  
    //über lines greift man auf die zeilen einer tstringlist zu
    ShortSpeicher[i]:=StrToVokabelInfo(testlist.lines[i]) ; 

  testlist.free();
end;


Das klappt immerhin schonmal, wenn insgesamt weniger als 500 Vokabeln vorhanden sind (besser wäre es die Anzahl der Vokabeln dynamisch auszulesen). ShortSpeicher sollte aber global definiert werden, sonst sind die eingelesenen Daten am Ende der Prozedur auch wieder weg.

Für diesen Beitrag haben gedankt: Thunfisch
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 20:40 
Warum denn keine Matrix mehr?
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 20:41 
Wofür willst du die Matrix haben? Du hast doch schon dein Record TVokabelInfo, dann kommst du mit ShortSpeicher[i].deutsch etc. bequem an die Werte.
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 21:07 
Hier habe ich mir eine neue funktion geschrieben aber mittels alt+v eingefügt und jetzt meldet mir delhpi eine Menge komischer Probleme.
Wie muss ich diese procedure oben in die types einfügen?

ausblenden 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:
procedure TForm1.StrToVokabelInfo(str: stringvar vokabel: TVokabel);
var
  i, j: integer;
  temp1: string;
begin
  vokabel.id '';
  vokabel.Deutsch := '';
  vokabel.Englisch := '';
  i := 1;
  while str[i] <> '#' do begin
   vokabel.id := vokabel.id + str[i];
   i := i + 1;
  end;

  i := i + 1;
  while str[i] <> '#' do begin
   vokabel.Deutsch := vokabel.Deutsch + str[i];
   i := i + 1;
  end;
  for j := i + 1 to length(str) do begin
   vokabel.Englisch := vokabel.Englisch + str[j];
  end;
end;
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 29.06.11 21:26 
"Eine Menge komischer Probleme" ist eine saubere Fehlerbeschreibung.

Weißt du eigentlich was du da machst? In der ersten zeile fehlt dir ein Zuweisungsoperator und wenn du aus ID nicht jetzt einen String gemacht hast (vorher wars ein integer) klappt deine erste Teilschleife so nicht.

P.S: Die Meldungen der komischen probleme sagen dir eigentlich recht deutlich wo etwas im argen liegt.
Thunfisch Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mi 29.06.11 21:39 
sorry für die ungenaue beschreibung. Hier nochmal alle fehlermeldungen, die ich bekomme (Ich denke durch die richtige definierung in type lösen sich die meisten):

[Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'TVokabel' (habe ich definiert)
[Fehler] Unit1.pas(56): Bezeichner redefiniert: 'TVokabel'
[Fehler] Unit1.pas(93): Operator oder Semikolon fehlt (mitten in der zeile bzw befehl)
[Fehler] Unit1.pas(94): Operator oder Semikolon fehlt (mitten in der zeile bzw befehl)
[Fehler] Unit1.pas(104): ',' oder ')' erwartet, aber Bezeichner 'D' gefunden
[Fehler] Unit1.pas(104): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(201): Inkompatible Typen: 'TObject' und 'String'
[Fehler] Unit1.pas(213): Deklaration von 'StrToVokabelInfo' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(218): Operator oder Semikolon fehlt

Und noch ca 10 mal operator oder semikolon fehlt

Wie gesagt
Zitat:
Ich denke durch die richtige definierung in type lösen sich die meisten


Also ich brauch nur wissen wie man die prozedur manuell in die type deklaration einträgt. Den Rest bekomme ich selbst hin
Oliver Maas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 55



BeitragVerfasst: Mo 04.07.11 17:47 
Hi

ich bin vermutlich spät dran, aber du hast ja (nehme ich an) ein Formular der Klasse TForm1,
darunter gibt es dann ja private ... public ... end;
Wenn du die procedure private haben willst, dann schreib unter private

ausblenden Quelltext
1:
procedure StrToVokabelInfo(str: string; var vokabel: TVokabel);					


zudem kannst du ja TVokabel vor TForm1 deklarieren.

viele Grüße

Olli