Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ladebalken beim laden von Wörterbuch (https://www.delphipraxis.net/68514-ladebalken-beim-laden-von-woerterbuch.html)

Nicodius 30. Apr 2006 21:34


ladebalken beim laden von Wörterbuch
 
Tag leute


es gibt da so nen wettbewerb(bzw hats gegeben) und da mich das thema interessiert hat hab ich eine lösungsvariante eines teilnehmers von php auf delphi übertragen und experimentiere grade viel herum

es geht um wortmischmasch in normale setze umwandel also

aus

Farnz buat Msit wird Franz baut Mist.

funktioneiren tut das ganze per wörterbuch etc - aber ich werde den delphicode dann eh opensource posten.


und zwar ist das wörterbuch 100 kb groß udn muss mit explode in zwei listen gefüllt werden.

Delphi-Quellcode:
var i : Integer;
begin
  Virtlist := TStringlist.Create;
  Virtlist.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'buch.txt');
  vlis := explode('*', Virtlist[0]);
  vlis1 := explode('*', Virtlist[0]); //vlis1 hat die korrekten werte;
  for i := low(vlis) to high(vlis) do
  begin
    vlis[i] := sortWirrWarr(vlis[i]);
  end;

ich würde gerne dem benutzer zeigen wie lange der vorgang noc hdauert - habe aber keinen blassen schimmer wie - und gefunden habe ich leider auch nichts(zwar gabs das mit ner imagevariante aber naja - das war mit einer schleife bei mir ist das problem dass das wirklich lange dieser explode code ist.

an threads habe ich scho ngedacht allerdings - ists das wert?


grüße Nico


ps.: bitte nicht die threadvariante jetzt als hauptvorschlag verwenden - ich komm mit dem thema einfach nicht zurecht und würdm ich freuen wenn ich heute ohen kopfzerbrechen das pogramm vollenden kann :zwinker:


grüße aus dem scönen österreich

Nico

Sko 30. Apr 2006 22:51

Re: ladebalken beim laden von Wörterbuch
 
hmm... ich würde das mit dem Ladebalken so machen:

Delphi-Quellcode:
var i : Integer;
begin
  Virtlist := TStringlist.Create;
  Virtlist.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'buch.txt');
  vlis := explode('*', Virtlist[0]);
  vlis1 := explode('*', Virtlist[0]); //vlis1 hat die korrekten werte;
  LadeLeiste.Max := high(vlis); //LadeLeiste = ProgressBar
  for i := low(vlis) to high(vlis) do
  begin
    vlis[i] := sortWirrWarr(vlis[i]);
    LadeLeiste.Position := i;
  end;
  LadeLeiste.Position := 0; //wenn fertig dann die Leiste auch wieder zurücksetzen
Ist nicht getestet, hab ich grad "live" geschrieben

Nicodius 30. Apr 2006 23:23

Re: ladebalken beim laden von Wörterbuch
 
Delphi-Quellcode:
var i : Integer;
begin
  Virtlist := TStringlist.Create;
  Virtlist.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'buch.txt');
  vlis := explode('*', Virtlist[0]);
  vlis1 := explode('*', Virtlist[0]); //vlis1 hat die korrekten werte;
  LadeLeiste.MaxValue := high(vlis); //LadeLeiste = ProgressBar
  for i := low(vlis) to high(vlis) do
  begin
    vlis[i] := sortWirrWarr(vlis[i]);
    LadeLeiste.Progress := i;
    Application.ProcessMessages;
  end;
  LadeLeiste.Progress := 0; //wenn fertig dann die Leiste auch wieder zurücksetzen
/edit

so bin ja draufgekommen das bei explode das problem ist

aber explode funktion kann ich den code nirgendwo einbauen :(


Delphi-Quellcode:
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 < 0) then 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 := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5);
      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);
end;
keine ahnung wie ichs machen soll :(

grüße Nico =)

marabu 1. Mai 2006 10:25

Re: ladebalken beim laden von Wörterbuch
 
Hallo Nico,

mein Rat an dich: speichere die Wortliste gleich im passenden Format und forme sie nicht bei jedem Programmaufruf mit Explode() um. Wenn die Wörter schon als Zeilen einer Textdatei vorliegen, dann kannst du sie in vernachlässigbarer Zeit in eine StringList einlesen, die an die Stelle des dynamischen StringArray treten kann.

Grüße vom marabu

PS: Kannst du auch noch nach der Feier überdenken - alles Gute zu deinem Geburtstag.

Nicodius 2. Mai 2006 08:23

Re: ladebalken beim laden von Wörterbuch
 
Zitat:

Zitat von marabu
PS: Kannst du auch noch nach der Feier überdenken - alles Gute zu deinem Geburtstag.

danke :)

also vielen dank für den tipp - ich wär da alleine nicht draufgekommen, obwohls eigentlich sehr logisch ist denke ich :|

vielen dank auch diesbezüglich :thumb:


grüße Nico


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz