Część
Proszę o pomoc ale na wstępie zaznaczam że kod nie jest mój ja nie jestem wstanie tego zrobić to za wysokie progi jak na razie dla mnie. Program polega na tłumaczeniu z PL na DE i odwrotnie chodzi dobrze
lecz próbuje po nitce do kłębka dojść do celu by dołożyć jeszcze wyświetlanie w nim grafiki
Program polega na tłumaczeniu:
pliki i tekst(słowa) są powiązane
pl.mp3 = de.mp3
pisownia(tekst) pl = pisownia(tekst) de
wymowa(uproszczona(tekst)) = wymowa(tekst) de
do tego dochodzi powiazanie
PL= pisownia pl, wymowa pl , pl.mp3
DE= pisownia de, wymowa de, de.mp3
plik .txt konfiguracyjny wygląda następująco:
1;DE;pisownia de; wymowa de; ścieżka do de.mp3;PL;pisownia pl; wymowa pl; ścieżka do pliku pl.mp3
w to chce włożyć jeszcze ścieżkę do pliku graficznego ja dodałam ją między:
.......;ścieżka de.mp3; ścieżka do pliku graficznego; PL.......
Chce by była powiązana z PL jak i DE Będzie jeden obrazek czy to będzie słowo PL czy DE i ztym proszę Was o pomoc i będę wdzięczna każdej o sobie która pomoże mi to zrobić
Każda rada będzie bezcenna a jak by to ktoś pomógł rozklepać i poskładać to będzie bajka bo jak pisałam idę po nitce do kłębka, zmieniając zmienne by zrozumieć kod, staram się ale to są za wysokie dla mnie progi i to droga przez mękę.
Teraz zapodam kod trochę skrócony i z moimi zmianami a w załączniku orginalny działający bez moich zmian
A więc wygląda to tak:
zaznaczyła co zmieniłam dołożyłam to tmpstrlist(5) w linii z intW1 i tak samo w IntW2 i tu wychodzą błędy
[dcc32 Hint] dictionary.pas(18): H2365 Override method tword.destroy should match case of ancestor TObject.Destroy
[dcc32 Hint] dictionary.pas(29): H2365 Override method TMdictionary.destroy should match case of ancestor TObject.Destroy
[dcc32 Error] dictionary.pas(147): E2066 Missing operator or semicolon
[dcc32 Error] dictionary.pas(147): E2010 Incompatible types: 'tword' and 'string'
[dcc32 Error] dictionary.pas(147): E2034 Too many actual parameters
[dcc32 Error] dictionary.pas(149): E2066 Missing operator or semicolon
[dcc32 Error] dictionary.pas(150): E2010 Incompatible types: 'tword' and 'string'
[dcc32 Error] dictionary.pas(150): E2034 Too many actual parameters
unit dictionary;
interface
uses classes, sysutils, MPlayer;
type
tword = class
number: integer;
order: integer;
ID: string;
translation: tword;
sciezka: string; // po zmianie z filename na sciezka pojawił sie ten problem
pisownia: string;
wymowa: string;
kodjezyka: string;
constructor create(aid, atext, aphonics, afilename, alanguage: string; atranslation: tword; anumber, aorder: integer);
destructor destroy; override;
end;
type
TMdictionary = class
private
directory: string;
public
languages: tstringlist;
words: tstringlist;
constructor create(afilename: string);
destructor destroy; override;
end;
implementation
function my_extractstrings(aseparator: char; atext: string; astringlist: tstringlist): integer;
var
tmpStr: string;
I: integer;
begin
result := 0;
tmpStr := '';
for I := 1 to length(atext) do
if atext[I] = aseparator then
begin
astringlist.Add(tmpStr);
tmpStr := '';
inc(result);
end
else
begin
tmpStr := tmpStr + atext[I];
end;
if tmpStr <> '' then
begin
astringlist.Add(tmpStr);
inc(result);
end
end;
{ Tdictionary }
constructor TMdictionary.create(afilename: string);
var
tmpfile: tstringlist;
tmpstrlist: tstringlist;
I: integer;
Count: integer;
intW1: integer;
intW2: integer;
kodjezyka1: string;
kodjezyka2: string;
begin
self.languages := tstringlist.create;
self.directory := extractfilepath(afilename);
words := tstringlist.create;
words.OwnsObjects := true;
tmpfile := tstringlist.create;
tmpstrlist := tstringlist.create;
try
tmpfile.LoadFromFile(afilename);
for I := 0 to tmpfile.Count - 1 do
begin
tmpstrlist.Clear;
Count := my_extractstrings(';', tmpfile[I], tmpstrlist);
if Count = 10 then
begin
//tmpstrlist(5) (dołożyłam)
intW1 := self.words.Addobject(inttostr(I * 2), tword.create(tmpstrlist[0], tmpstrlist[2], tmpstrlist[3],
tmpstrlist[4],tmpstrlist(5), tmpstrlist[1], nil, I * 2, 1));
//tmpstrlist(5) (dołożyłam)
intW2 := self.words.Addobject(inttostr(I * 2 + 1), tword.create(tmpstrlist[0],tmpstrlist(5), tmpstrlist[7],
tmpstrlist[8],tmpstrlist[9], tmpstrlist[6], nil, I * 2 + 1, 2));
tword(self.words.Objects[intW1]).translation := tword(self.words.Objects[intW2]);
tword(self.words.Objects[intW2]).translation := tword(self.words.Objects[intW1]);
kodjezyka1 := tmpstrlist[1];
kodjezyka2 := tmpstrlist[6];
if self.languages.IndexOf(kodjezyka1) < 0 then
self.languages.Add(kodjezyka1);
if self.languages.IndexOf(kodjezyka2) < 0 then
self.languages.Add(kodjezyka2);
end;
end;
finally
tmpfile.free;
tmpstrlist.free;
end;
end;
destructor TMdictionary.destroy;
begin
self.languages.free;
self.words.free;
inherited;
end;
{ tword }
constructor tword.create(aid, atext, aphonics, afilename, alanguage: string; atranslation: tword; anumber, aorder: integer);
begin
self.ID := aid;
self.sciezka := afilename;
self.pisownia := atext;
self.wymowa := aphonics;
self.kodjezyka := alanguage;
end;
destructor tword.destroy;
begin
///
inherited;
end;
end.