AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AV mit TStringList-Methode Add()

Ein Thema von Mackhack · begonnen am 20. Jul 2006 · letzter Beitrag vom 22. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#1

AV mit TStringList-Methode Add()

  Alt 20. Jul 2006, 06:05
Hi,

warum kracht es hier denn mit einer AV in der Files.Add(...) Zeile? Files ist vom Typ TStringList

Delphi-Quellcode:
...
repeat
  if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY ) then
    if ( IsLanguageFile(aRoot + wfd.cFileName, '<Languages>') ) then
      Files.Add(aRoot + wfd.cFileName);
until FindNextFile(hFile, wfd) = False;
...
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: AV mit TStringList-Methode Add()

  Alt 20. Jul 2006, 06:36
Ist schon eine Instanz der Stringliste erzeugt?
Markus Kinzler
  Mit Zitat antworten Zitat
Mordilion

Registriert seit: 18. Mär 2004
Ort: Niederkassel
26 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: AV mit TStringList-Methode Add()

  Alt 20. Jul 2006, 07:26
Wie mein vorschreiber schon erwähnte, wäre es gut zu wissen ob du eine Instanz erzeugst.

Wenn nicht hilft das vielleciht weiter?

Delphi-Quellcode:
  // Dann erzeugen wir mal die Instanz
  Files := TStringList.Create;
  try
    {...}
    repeat
      if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY ) then
        if ( IsLanguageFile(aRoot + wfd.cFileName, '<Languages>') ) then
          Files.Add(aRoot + wfd.cFileName);
    until FindNextFile(hFile, wfd) = False;
    {...}
  finally
    // Wenn man was erzeugt, muss es auch weider freigegeben werden!
    // Aber erst nachdem man die Daten verarbeitet hat, da sie sonst weg sind!
    Files.Free
  end;

Gruß
Mordi
Für das große Chaos haben wir Computer. Die übrigen Fehler machen wir von Hand.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#4

Re: AV mit TStringList-Methode Add()

  Alt 20. Jul 2006, 08:26
Hab vergessen ne Instanz zu erzeugen.

Danke euch!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#5

Re: AV mit TStringList-Methode Add()

  Alt 21. Jul 2006, 01:38
Hab nochmal ne Frage dazu hier:

Warum ist denn das Files.Count immer 0 und somit kommt nix im TestMemo an?

Delphi-Quellcode:
var
  I : Integer;
  Files : TStringList;
begin
  Memo1.Clear;
  Files := TStringList.Create;
  FindFile.SearchFiles('c:\', Files, '*.xml', False);
  for I := 0 to Files.Count - 1 do
    Memo1.Lines.Add(Files[I])
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: AV mit TStringList-Methode Add()

  Alt 21. Jul 2006, 05:29
Zitat von Mackhack:
Hab nochmal ne Frage dazu hier:

Warum ist denn das Files.Count immer 0 und somit kommt nix im TestMemo an?

Delphi-Quellcode:
var
  I : Integer;
  Files : TStringList;
begin
  Memo1.Clear;
  Files := TStringList.Create;
  FindFile.SearchFiles('c:\', Files, '*.xml', False);
  for I := 0 to Files.Count - 1 do
    Memo1.Lines.Add(Files[I])
end;
Weil die Methode SearchFiles von der Klasse FindFiles keine Dateien in die StringListe schreibt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#7

Re: AV mit TStringList-Methode Add()

  Alt 21. Jul 2006, 06:21
Und warum tut sie das nicht?

Geht eigentlich sauber durch den code und erkennt auch die Datei!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: AV mit TStringList-Methode Add()

  Alt 21. Jul 2006, 07:57
warum sie das nicht tut wissen wir nicht wenn du uns die Funktion nicht vollständig postest (das wollte dir Luckie damit sagen, wir können es nicht wissen wenn wir nicht wissen wie dein quelltext aussieht)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#9

Re: AV mit TStringList-Methode Add()

  Alt 22. Jul 2006, 02:08
Zitat von Mordilion:
Wie mein vorschreiber schon erwähnte, wäre es gut zu wissen ob du eine Instanz erzeugst.

Wenn nicht hilft das vielleciht weiter?

Delphi-Quellcode:
  // Dann erzeugen wir mal die Instanz
  Files := TStringList.Create;
  try
    {...}
    repeat
      if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY ) then
        if ( IsLanguageFile(aRoot + wfd.cFileName, '<Languages>') ) then
          Files.Add(aRoot + wfd.cFileName);
    until FindNextFile(hFile, wfd) = False;
    {...}
  finally
    // Wenn man was erzeugt, muss es auch weider freigegeben werden!
    // Aber erst nachdem man die Daten verarbeitet hat, da sie sonst weg sind!
    Files.Free
  end;

Gruß
Mordi
Es ist das Files.Free das mir die TStringList leer raeumt. Aber wo sonst sollte denn das Files.Free hin wenn nicht an das Ende der Procedure?

Ich habe das ganze jetzt mal in eine Function gepackt mit dem Rueckgabewert TStringList. Jedoch sieht das irgendwie nicht wirklich richtig aus wenns auch funktioniert.

Delphi-Quellcode:
var
  I: Integer;
begin
  for I := 0 to FindFile.SearchFiles('c:\', '*.xml', False).Count - 1 do
    Memo1.Lines.Add(FindFile.SearchFiles('c:\', '*.xml', False)[I])
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: AV mit TStringList-Methode Add()

  Alt 22. Jul 2006, 02:26
Moin Mackhack,

wenn Du die Stringlist als Parameter an die Routine übergibst, die die Liste füllen soll, dann muss sie schon vor der Übergabe erzeug t worden sein.
Die aufgerufene Routine schreibt dann nur noch ihre Daten da rein, erzeugt sie nicht, und gibt sie nicht frei.
(in der Hoffnung Dein Problem richtig verstanden zu haben)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:26 Uhr.
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