AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Speichern Von daten aus einem array endet in leerer Datei
Thema durchsuchen
Ansicht
Themen-Optionen

Speichern Von daten aus einem array endet in leerer Datei

Ein Thema von Pitti911 · begonnen am 29. Jan 2009 · letzter Beitrag vom 31. Jan 2009
 
Pitti911
(Gast)

n/a Beiträge
 
#1

Speichern Von daten aus einem array endet in leerer Datei

  Alt 29. Jan 2009, 12:52
in folgener OnClick-Routiene sollen daten aus einer Datei in einen Dyn. Array eingelesen werden, nach einem Bestimmten Begriff gesucht werden(dann werden paar vergleiche angestellt)

und dann Falls gefunden Daten editiert und falls der eintrag nicht vorhanden ist ein neuer dazugesetzt werden

aber iwie Endet das ganze wenn der eintrag schon Vorhanden ist in totalem Wirrwar -.-

aber schaut euch den code selber an:
Code:
Type Thunter =record                   // das datenformat in dem gespeichert werden soll
            Acc: String[40];
            Bots: String[255];
            Score: Integer;
            end;

procedure Sortier(var A: array of Thunter); //sortieralgorythmus
var
  i: Integer;
  j: Integer;
  tmp: Thunter;
begin
  for i:= 1 to high(A) do
  begin
    j:= i;
    tmp := A[i];
    while (j > 0) and (A[j-1].Score > tmp.Score) do
    begin
      // Verschieben:
      A[j]:= A[j-1];
      Dec(j);
    end;
    A[j]:= tmp;
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
Var users: file Of Thunter;
    hilf: array of Thunter;
    c:boolean;
    i:integer;
    s:string;
begin
  i:=0;      //loop Variable null setzen
  c:=true;   //abfrage Variable Falsch setzen
  Assignfile(Users,'Hunter.dat'); //datei zuweisen
  if Fileexists('Hunter.dat') then
    Begin                                //falls existiert
      Reset(users);
      Setlength(hilf,Filesize(users)+1);
      seek(users,0);
      while not EOF(users) do
      Begin
        read(users,hilf[i]);
        inc(i);
      END;
      closefile(users);
      for i := 0 to high(hilf) do
      Begin
        if AnsiLowercase(hilf[i].Acc)=AnsiLowercase(Labelededit1.Text) then
          Begin
            c:=false;      //auf gefunden setzen ;) wichtig für paar zeilen später
            if pos(Ansilowercase(labelededit2.Text+' '+Labelededit3.text),Ansilowercase(hilf[i].Bots)+',')=0 then
            Begin
              s:=hilf[i].bots;
              hilf[i].Bots:=s+', '+Labelededit2.text+' '+Labelededit3.text;
              case strtoint(Labelededit3.Text) of
              0..90: hilf[i].Score:=hilf[i].Score+1;
              91..94:hilf[i].score:=hilf[i].score+2;
              95..96:hilf[i].score:=hilf[i].score+4;
                  97:hilf[i].score:=hilf[i].score+6;
                  98:hilf[i].score:=hilf[i].score+10;
                  99:hilf[i].score:=hilf[i].score+20;
              end;
            END
            Else Showmessage('bot wurde bereits vom entsprechenden Hunter erlegt');
          end
        ELSE
          if (i=high(hilf)) AND c then     //falls nicht gefunden dann Neunen 'acceinttrag' anlegen  (das funktioniert soweit getestet auch sehr gut)
          Begin
            hilf[i].Acc:=Labelededit1.Text;
            hilf[i].Bots:=labelededit2.Text+' '+Labelededit3.text;
            case strtoint(Labelededit3.Text) of
              0..90: hilf[i].Score:=1;
              91..94:hilf[i].score:=2;
              95..96:hilf[i].score:=4;
                  97:hilf[i].score:=6;
                  98:hilf[i].score:=10;
                  99:hilf[i].score:=20;
            end;
          end;
      end;
    CopyFile('hunter.dat','hunterbackup.dat',False);
    Delay(20);
    AssignFile(users,'hunter.dat');
    Rewrite(users);
    sortier(hilf);
    i:=0;   // loop wieder null setzen für das einspeichern der daten
    while (i<sizeof(hilf)) And (hilf[i].acc<>'') do
      Begin
        Write(users,hilf[i]);
        inc(i);
      end;
    closefile(users);
    end       //iwo hiervor muss der Fehler stecken aber wo???
  ELSE
  Begin
    i:=0;
    Rewrite(users);
    setlength(hilf,1);
    hilf[0].Acc:=labelededit1.Text;
    hilf[0].Bots:=labelededit2.Text+ ' '+ Labelededit3.text;
    case strtoint(Labelededit3.Text) of
       0..90:hilf[i].Score:=1;                                                      //funktioniert einwandfrei
      91..94:hilf[i].score:=2;
      95..96:hilf[i].score:=4;
          97:hilf[i].score:=6;
          98:hilf[i].score:=10;
          99:hilf[i].score:=20;
    end;
    Write(users,hilf[0]);
    Closefile(users);
  end;

end;

Falls jemand den Fehler findet und mir auch verrät wo dann bekommt er von mirein paar virtuelle ausgegeben
ich Find ihn nich den Fehler
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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