Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi fehler bei delete, seltsame compilermeldung (https://www.delphipraxis.net/69925-fehler-bei-delete-seltsame-compilermeldung.html)

Andreas L. 22. Mai 2006 13:53


fehler bei delete, seltsame compilermeldung
 
Hi,
ich habe mir folgende Funktion gebastelt:
Delphi-Quellcode:
function IEListAllCookieNames:TStrings;
var
 temp: TStrings;
 i: integer;
begin
 FindAllFiles(temp, IECookiePath, '*.txt', true);
 for i:=0 to temp.Count-1 do
  begin
   Delete(temp.strings[i],0 , pos(temp.strings[i],'@'));
  end;
 Result:=temp;
end;
FindAllFiles ist eine Dateisuch-Prozedur von Sakura/Luckie (http://www.delphipraxis.net/internal...t=findallfiles). IECookiePath ist eine Konstante und enthält eine Pfadangabe (Bsp.: C:\bla\dir\). In der Zeile mit Delete versuche ich alles was vor dem @ ( AT ) im Dateinamen steht zu entfernen. Jedoch meldet der Compiler mir genau in dieser Zeile folgende Fehlermeldung und der Cursor bleibt am Ende der Zeil stehen.

Code:
[Fehler] Unit1.pas(90): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Ich habe schon in der Delphi-Hilfe nach diesen Compiler-Fehler gesucht, da steht aber nur: Dies ist eine reservierte Compilermeldung!

Ich komm einfach nicht drauf. Weiß jemand wo der Fehler liegt? Wenn ich mir die Fehlermeldung so anschaue denke ich das es etwas mit der Konstante "IECookiePath" zu tun hat, weiß aber nicht warum...

Klaus01 22. Mai 2006 13:57

Re: fehler bei delete, seltsame compilermeldung
 
nur mal so eine dumme Frage, fehlt da vielleicht noch ein

Delphi-Quellcode:
temp:= TStrings.create;
?

Oder liegt es daran:
Zitat:

Derive a class from TStrings to store and manipulate a list of strings. TStrings contains abstract methods and should not be directly instantiated.
Grüße
Klaus

Andreas L. 22. Mai 2006 13:58

Re: fehler bei delete, seltsame compilermeldung
 
Zitat:

Zitat von Klaus01
nur mal so eine dumme Frage, fehlt da vielleicht noch ein

Delphi-Quellcode:
temp:= TStrings.create;
?

Grüße
Klaus

Ja, hab ich vergessen. Ändert aber nix am Fehler... Trotzdem Danke :-)

Zitat:

Derive a class from TStrings to store and manipulate a list of strings. TStrings contains abstract methods and should not be directly instantiated.
Was heißt das letzte Wort? Heißt das jetzt das ich TStrings nicht direkt zum verändern von Strings verwenden soll? Wie soll ich das den sonst machen?

EDIT: Och, ich nehm einfach eine StringList ;-)

Klaus01 22. Mai 2006 14:01

Re: fehler bei delete, seltsame compilermeldung
 
Delphi-Quellcode:
function IEListAllCookieNames:TStrings;
var
  temp: String;
  i: integer;
begin
  FindAllFiles(temp, IECookiePath, '*.txt', true);
  for i:=0 to temp.Count-1 do
    begin
      Delete(temp.strings[i],0 , pos(temp.strings[i],'@'));
    end;
  Result:=temp;
end;
Vielleicht tut es ja so?

Wnn Du allerdings diese Funktion genommen hast -> http://www.delphipraxis.net/internal...=392510#392510
Dann mußt Du eine TStringList nehmen.

Grüße
Klaus

[edit] Ergänzung TStringList [/edit]

Hawkeye219 22. Mai 2006 14:04

Re: fehler bei delete, seltsame compilermeldung
 
temp.strings[] ist eine Eigenschaft, die nicht als Variablenparameter an Delete übergeben werden kann. Du mußt entweder mit der Copy-Funktion arbeiten oder eine String-Hilfsvariable benutzen.

Die Stringliste solltest du über

Delphi-Quellcode:
temp := TStringList.Create;
erzeugen.

Gruß Hawkeye

Andreas L. 22. Mai 2006 14:05

Re: fehler bei delete, seltsame compilermeldung
 
Zitat:

Zitat von Klaus01
Delphi-Quellcode:
function IEListAllCookieNames:TStrings;
var
  temp: String;
  i: integer;
begin
  FindAllFiles(temp, IECookiePath, '*.txt', true);
  for i:=0 to temp.Count-1 do
    begin
      Delete(temp.strings[i],0 , pos(temp.strings[i],'@'));
    end;
  Result:=temp;
end;
Vielleicht tut es ja so?

Wnn Du allerdings diese Funktion genommen hast -> http://www.delphipraxis.net/internal...=392510#392510
Dann mußt Du eine TStringList nehmen.

Grüße
Klaus

[edit] Ergänzung TStringList [/edit]

FindAllFiles will TStrings als ersten Parameter haben. Klappt also nicht. Außerdem kann ich ja nicht mehrere Strings in einen String schieben...

Andreas L. 22. Mai 2006 14:08

Re: fehler bei delete, seltsame compilermeldung
 
Zitat:

Zitat von Hawkeye219
..String-Hilfsvariable benutzen...

Und wie? Sorry, steh heute voll am Schlauch...

Hawkeye219 22. Mai 2006 14:14

Re: fehler bei delete, seltsame compilermeldung
 
Ok, 'ne Q&D-Lösung wäre

Delphi-Quellcode:
s := temp[i];
Delete(s, 1, pos('@', s));
temp[i] := s;
s einfach als String-Variable deklarieren.

Gruß Hawkeye

Andreas L. 22. Mai 2006 16:08

Re: fehler bei delete, seltsame compilermeldung
 
Zitat:

Zitat von Hawkeye219
Ok, 'ne Q&D-Lösung wäre

Delphi-Quellcode:
s := temp[i];
Delete(s, 1, pos('@', s));
temp[i] := s;
s einfach als String-Variable deklarieren.

Gruß Hawkeye

Hurra es compiliert... Leider bekomm ich beim Aufrufen der Funktion einen AbstactError. Hier mal der Aufruf plus Funktion:
Delphi-Quellcode:
function IEListAllCookieNames:TStrings;
var
 temp: TStrings;
 s: String;
 i: integer;
begin
 temp:=TStrings.Create;
 FindAllFiles(temp, IECookiePath, '*.txt', true);
 for i:=0 to temp.Count-1 do
  begin
   s:=temp.strings[i];
   Delete(s,0 , pos(temp.strings[i],'@'));
   temp.Strings[i]:=s;
  end;
 Result:=temp;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Listbox1.Clear;
 Listbox1.Items:=IEListAllCookieNames;
end;
EDIT: Der Cursor bleibt hinter den Funktionsaufruf stehen...

marabu 22. Mai 2006 16:14

Re: fehler bei delete, seltsame compilermeldung
 
Du hast doch weiter oben schon gesehen, dass du TStrings nicht direkt instanziieren darfst.

Delphi-Quellcode:
var
  s: TStrings;
begin
  s := TStringList.Create;
  // ...
end;
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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