| Autor | Beitrag | 
| Thunfisch  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 15: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 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 18: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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 18: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 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 18: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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 18:52 
 
Ich hab es einfach so ausprobiert :
 		                       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 19:01, insgesamt 1-mal bearbeitet
 | 
|  | 
| Jann1k 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 19: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:
 		                       Delphi-Quelltext 
 									| 1:
 | StrToVokabelInfo('12#mutig#brave') ;					 |  Für diesen Beitrag haben gedankt: Thunfisch
 | 
|  | 
| Thunfisch  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 19: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 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 19: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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 19:13 
 
Ja mensch cih hab total den Blackout
 Wie wäre es mit :
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 
 |  vartestlist : Tstringlist;
 ShortSpeicher : array[3..,500..];
 
 begin
 testlist := tstringlist.create   ;
 testlist.loadfromfile('vokabeln.txt') ;
 
 For i := 1 to ID begin
 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 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 19:25 
 
		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 
 |  vari:integer;
 testlist : Tstringlist;
 ShortSpeicher : array[0..500] of TVokabelInfo;
 
 begin
 testlist := tstringlist.create   ;
 testlist.loadfromfile('vokabeln.txt') ;
 
 For i := 0 to testlist.count-1
 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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 19:40 
 
Warum denn keine Matrix mehr? | 
|  | 
| Jann1k 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 19: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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 20: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?
 		                       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: string; var 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 
          Beiträge: 866
 Erhaltene Danke: 43
 
 Win 7
 TurboDelphi, Visual Studio 2010
 
 | 
Verfasst: Mi 29.06.11 20: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  Hält's aus hier
 Beiträge: 15
 
 
 
 
 | 
Verfasst: Mi 29.06.11 20: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 
          Beiträge: 55
 
 
 
 
 | 
Verfasst: Mo 04.07.11 16: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
 		                       Quelltext 
 									| 1:
 | procedure StrToVokabelInfo(str: string; var vokabel: TVokabel);					 |  zudem kannst du ja TVokabel vor TForm1 deklarieren.
 viele Grüße
 Olli | 
|  |