Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kann Datei nicht öffnen (https://www.delphipraxis.net/159112-kann-datei-nicht-oeffnen.html)

EWeiss 15. Mär 2011 00:06

Kann Datei nicht öffnen
 
Hab ne billige Datei erstellt.

Zitat:

Standard1, 0, 0
Standard2, 0, 1
Room, 0, 8
Rock, 0, 16
Electro, 0, 24
Analog, 0, 25
Jazz, 0, 32
Brush, 0, 40
Classic, 0, 48
Das ist alles ..

benannt habe ich Sie Drum.txt

Wenn ich die öffne mit TStringList wird sie gelesen.
Und die Einträge addiert.

Will ich sie dann freigeben die StringList kracht meine Anwendung.
Nehme ich hingegen meine Instrument.txt und benenne sie nach Drum.txt um funktioniert alles so wie es soll.
Benenne ich die Drum.txt um nach Instrument.txt dann krachts.

jemand sowas schon erlebt?

Kein Schreibschutz alle Attribute vorhanden lesen usw...

Keine Ahnung was ich da machen soll.
Mir noch nie untergekommen sowas.

gruss

Luckie 15. Mär 2011 00:17

AW: Kann Datei nicht öffnen
 
Zeig mal etwas mehr Code. Ich kann mir nicht vorstellen, dass es am Dateinamen liegt. Kann es sein, dass sie irgendwann wieder gelöscht wird?

Delphi-Quellcode:
procedure TForm14.Button1Click(Sender: TObject);
var
  sl: TStringList;
  i: Integer;
begin
  if OpenDialog1.Execute then
  begin
    sl := TStringList.Create;
    try
      sl.LoadFromFile(OpenDialog1.FileName);
      for i := 0 to sl.Count - 1 do
      begin
        Listbox1.Items.Add(sl[i]);
      end;
    finally
      sl.Free;
    end;
  end;
end;
Keine Probleme.

Was machst du noch mit der Datei? Bist du im richtigen Pfad? Existiert die Datei? Vorher mal mit FileExists prüfen. Mehr fällt mir jetzt auch nicht ein.

EWeiss 15. Mär 2011 00:38

AW: Kann Datei nicht öffnen
 
Zitat:

Zitat von Luckie (Beitrag 1088510)
Zeig mal etwas mehr Code. Ich kann mir nicht vorstellen, dass es am Dateinamen liegt. Kann es sein, dass sie irgendwann wieder gelöscht wird?

Delphi-Quellcode:
procedure TForm14.Button1Click(Sender: TObject);
var
  sl: TStringList;
  i: Integer;
begin
  if OpenDialog1.Execute then
  begin
    sl := TStringList.Create;
    try
      sl.LoadFromFile(OpenDialog1.FileName);
      for i := 0 to sl.Count - 1 do
      begin
        Listbox1.Items.Add(sl[i]);
      end;
    finally
      sl.Free;
    end;
  end;
end;
Keine Probleme.

Was machst du noch mit der Datei? Bist du im richtigen Pfad? Existiert die Datei? Vorher mal mit FileExists prüfen. Mehr fällt mir jetzt auch nicht ein.

Ich habe wie oben beschrieben lediglich die Dateien vertauscht also die Drum.text mit Instrument.txt vertauscht
Dadurch wird sie von einer anderen Funktion gelesen auch hier kracht es.
Lese ich hingegen die Instrument,txt mit der Funktion die vorher die Drum.txt gelesen hat dann funktioniert alles.

Es muss an der Datei liegen aber frag mich mal was .. ??

Delphi-Quellcode:
            if DrumList.ListCount(SKAERO_GetMainItem(ID_DRUMLIST)) = 0 then
            begin
              InstList := TStringList.Create;
              try
                InstList.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Config\Drum.txt');
                SetLength(DRArrayList, InstList.Count -1);
                for IntI := 0 to InstList.Count -1 do
                begin
                  DRArrayList[IntI] := InstList.Strings[IntI];
                  tmpStr := Split(DRArrayList[IntI],',');
                  DrumList.ListAdd(SKAERO_GetMainItem(ID_DRUMLIST), tmpStr[0]);
                end;
              finally
                InstList.Free;
                tmpStr := nil;
              end;
            end;
Da ist nichts falsch zumindest nicht was ich sehen kann.
Delphi-Quellcode:
SKAERO_GetMainItem(ID_DRUMLIST)

Ist das Handle der DrumList!


gruss

Luckie 15. Mär 2011 00:42

AW: Kann Datei nicht öffnen
 
Das einzig ungewöhnliche, was mir auffällt ist das
Delphi-Quellcode:
tmpStr := nil;
. Warum setzt du den lokalen String auf nil?

Ist in einer Textdatei eventuell ein Fehler drin? Was macht Split? Eventuell kracht es da. Tut mir Leid ich kann auch nur raten im Moment.

Ein Moment:
Delphi-Quellcode:
SetLength(DRArrayList, InstList.Count -1);
Das Array ist zwar nullbasierend, aber Count gibt die Anzahl der Elemente an. Du hast ein Element zu wenig. Und in einer Datei hast du eventuell am Ende noch eine Leerzeile, deswegen kracht es bei dieser nicht. Du hast die Elemente 0 - 9 Das sind 10 Elemente und Count sollte dir auch 10 zurückgeben. Die Schleife muss aber natürlich von 0 bis 9 laufen.

EWeiss 15. Mär 2011 00:45

AW: Kann Datei nicht öffnen
 
Zitat:

Zitat von Luckie (Beitrag 1088512)
Das einzig ungewöhnliche, was mir auffällt ist das
Delphi-Quellcode:
tmpStr := nil;
. Warum setzt du den lokalen String auf nil?

Ist in einer Textdatei eventuell ein Fehler drin? Was macht Split? Eventuell kracht es da. Tut mir Leid ich kann auch nur raten im Moment.

Ich kann ihn auch einfach auf SetLength(tmpStr, 0) setzen.
Aber der Fehler tritt bei Free auf.
Dateien werden alle ordnungsgemäß addiert mit der Spilt funktion.


Delphi-Quellcode:
function Split(const Source, Delimiter: string): TSplitStrArray;
var
  spCount: integer;
  spPos:   integer;
  spLength: integer;
  sTemp:   string;
  aSplit:  TSplitStrArray;

begin
  sTemp   := Source;
  spCount := 0;
  spLength := Length(Delimiter) - 1;
  repeat
    spPos := Pos(Delimiter, sTemp);
    if spPos = 0 then
      break
    else
    begin
      Inc(spCount);
      SetLength(aSplit, spCount);
      aSplit[spCount - 1] := Copy(sTemp, 1, spPos - 1);
      Delete(sTemp, 1, spPos + spLength);
    end;

  until False;
  if Length(sTemp) > 0 then
  begin
    Inc(spCount);
    SetLength(aSplit, spCount);
    aSplit[spCount - 1] := sTemp;
  end;

  Result := aSplit;

end;

gruss

Luckie 15. Mär 2011 00:48

AW: Kann Datei nicht öffnen
 
Guck dir meinen letzten Beitrag noch mal an. Ich habe noch was ergänzt. Aber warum machst du das?

EWeiss 15. Mär 2011 00:52

AW: Kann Datei nicht öffnen
 
Zitat:

Zitat von Luckie (Beitrag 1088514)
Guck dir meinen letzten Beitrag noch mal an. Ich habe noch was ergänzt. Aber warum machst du das?

Zitat:

Ein Moment: SetLength(DRArrayList, InstList.Count -1); Das Array ist zwar nullbasierend, aber Count gibt die Anzahl der Elemente an. Du hast ein Element zu wenig. Und in einer Datei hast du eventuell am Ende noch eine Leerzeile, deswegen kracht es bei dieser nicht. Du hast die Elemente 0 - 9 Das sind 10 Elemente und Count sollte dir auch 10 zurückgeben.
Boah ja ... Klasse das du das gefunden hast.
Ist mir jetzt zu später stunde nicht aufgefallen.

Delphi-Quellcode:
SetLength(InstArrayList, InstList.Count);
Habs jetzt berichtig und jetzt funktioniert es.

Danke

gruss

Luckie 15. Mär 2011 00:56

AW: Kann Datei nicht öffnen
 
je später der Abend, desto schöner die Bugs. ;)

EWeiss 15. Mär 2011 00:58

AW: Kann Datei nicht öffnen
 
Zitat:

Zitat von Luckie (Beitrag 1088516)
je später der Abend, desto schöner die Bugs. ;)

LOL hast recht manchmal sieht man vor lauter Bäumen den Wald nicht mehr.

gruss

Luckie 15. Mär 2011 01:04

AW: Kann Datei nicht öffnen
 
Manchmal hilft es auch einfach mal schlafen zu gehen. und sich das am nächsten Morgen noch mal ausgeschlafen anzugucken. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr.
Seite 1 von 2  1 2      

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