Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Unbekannter Fehler in Script; Bitte um Unterstützung!

  Alt 1. Mär 2009, 10:59
Dein Sourcecode ist (sorry für die harten Worte) ein richtiger Saustall.
Ich geb dir mal ein paar Beispiele:
die Funktion AnsiToUtf8 - warum tust du diese Funktion nicht in eine eigene Unit.
Diese Unit könnte z.B. UnicodeUtils heisen.
In dieser Unit ist natürlich auch die Umkehrfunktion Utf8ToAnsi enthalten.
Und schon sieht deine Hauptunit etwas aufgeräumter aus.

Nächstes Problem, deine globalen Variablen.
Delphi-Quellcode:
var
  Form1: TForm1;
  // alles von HIER
  ColumnToSort: Integer;
  LastSorted: Integer;
  SortDir: Integer;
  LvSortStyle: TCustomSortStyle;
  LvSortOrder: array[0..4] of Boolean;
  // bis HIER
Alle markierten Variablen gehören unter den Abschnitt private von deinem Form.

Und folgender Sourcecode
Delphi-Quellcode:
Function Reinigen (Liste:TStringlist): Tstringlist;
begin
  // Satzzeichen in Leerzeichen umwandeln
  liste.Text:=stringreplace(liste.Text,'.',' ',[rfReplaceAll, rfIgnoreCase]);
  liste.Text:=stringreplace(liste.Text,',',' ',[rfReplaceAll, rfIgnoreCase]);
  // u.s.w. u.s.w
ist natürlich sehr umständlich und langsam.
Immer wenn du viele gleiche Zeilen siehst, dann muss das ein Warnsignal sein, dass da was nicht stimmt.
Der Sourcecode "stinkt" sozusagen.
Wie kann man das besser machen?
Z.B. so:
Delphi-Quellcode:
procedure Reinigen(Liste:TStrings);
var
  s : string;
  i : integer;
begin
  s := liste.Text; // mit Zwischenvariablen kann man besser arbeiten
  for i := 1 to Length(s) do
  begin
    if s[i] in ['.', ',', ';', '?', .... {hier alle anderen Zeichen}] then
       s[i] := ' ';
  end;
  Liste.Text := s;
end;
Das war jetzt Hilfe zur Selbsthilfe.
Ich kann dir nicht sagen, wo bei deinem Sourcecode der gesuchte Fehler ist,
weil es an allen Ecken und Enden klemmt.
Das ist jetzt nicht bös gemeint; jeder hat mal klein angefangen.
Was ich damit sagen will, du musst erst mal gründlich aufräumen, bevor du deinen Fehler suchen kannst.
Gut möglich, dass während der Aufräumarbeit der Fehler von selbst verschwindet.
  Mit Zitat antworten Zitat