AGB  ·  Datenschutz  ·  Impressum  







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

zugriffsverletzung bei TStrings

Ein Thema von glkgereon · begonnen am 30. Jun 2004 · letzter Beitrag vom 30. Jun 2004
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:13
hi

ich hab mir ein globalen tstrings gemacht und onbuttob1.click gesagt

Data.loadfromfile(ShellTreeView1.path);

ich hab was ausgewählt auf c:\
dann geklickt und zugriffsverletzung beim laden
was ist das???
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:15
TStrings ist eine abstrakte Klasse, die man nicht instantiiert.
Nutze stattdessen zum Beispiel TStringList.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:16
Hallo

ein data:=Tstringlist.create; hast du aber schon irgendwo stehen? das data.free natürlich auch nicht vergessen

Mfg frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:17
das hat aber früher auch immer geklappt

das problem hatt ich nur wenn ichs lokal deklariere...

ich hab früher immer sowas gemacht, und es hat geklappt

hmm, werds versuchen

Edit:

ausprobiert, geht nicht:

ich hab die deklaration lokal gemacht, ein Tstring.create hingetan und es ginbt einen fehler

free dazu hilft auch nix
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:23
Zitat:
ginbt einen fehler
Ehrlich gesagt sollte man mit 500 posts in der lage sein, den fehler zu beschreiben, es gibt nämlich mehr als einen.
ein tstring.create gibts nicht. Data:=Tstrings.create führt zu nichts, das hat daniel schon gesagt.

ansonsten poste deine routine und genau den fehler ... (kann man acuh mit strg+c kopieren)

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#6

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:32
hmm, kann man mit TStringList genauso "arbeiten"?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 17:39
Tstrings ist die basisklasse, dort sind viele Methoden als abstrakt definiert, die erst in Tstringlist implementiert sind.
Wenn du nur data:=Tstrings.create verwendest, wirst du öfters einen abstract error zu gesicht bekommen, weil die methoden nicht vorhanden sind

Gibt mal Tstringlist in der oh ein und drück auf siehe auch, das thema Arbeiten mit Stringlisten ist in der OH sehr ausführlich.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 18:31
ja, ich nutz jetzt TStringlist

funzt aber immer noch nit

also, das ding soll eine datei einlesen und zählen, wie oft jedes wort vorkommt
kann man das noch optimieren bzw wo ist mein fehler?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
wort:string;
i:integer;
data, woerter, zahlen:TStrings;
begin
//create
Data:=TStringList.Create;
Woerter:=TStringList.Create;
zahlen:=TStringList.Create;
//laden
data.LoadFromFile(Shelltreeview1.Path);
while i<length(data.Text) do
    Begin
    if data.Text[i]='//wenn wort zuende
    then Begin
          if data.IndexOf(wort)<>-1 //wenn wort schon abgelegt, zähler erhöhen
          then zahlen.Strings[data.IndexOf(wort)]:=inttostr(strtoint(zahlen.Strings[data.IndexOf(wort)])+1)
          else Begin //sonst neu anlegen und zähler auf eins setzen
                data.Add(wort);
                zahlen.Add('1');
                End;
          wort:='';
          End
    else wort:=wort+data.Text[i]; //wenn wort nicht zuende dann buchstabe hinzufügen
    i:=i+1;
    end;
for i:=0 to Woerter.Count-1 do
    ListBox1.Items.Add(zahlen[i]+' - '+woerter[i]);
end;
bei der letzten forschleife sollen die ergebnisse ausgegeben werden...
es kommt aber nichts....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 19:04
da sind mehrere Fehler:
1. die free´s für die 3 erstellten Stringlisten fehlen
2. string beginnen ab 1, dein
Delphi-Quellcode:
while i<length(data.Text) do
    Begin
    if data.Text[i]='//wenn wort zuende
ist so nicht korrekt, da du von 0 anfängst. da fehlt ein i:=1;. außerdem ist bei '' mit sicherheit kein einzigstes Wort zu ende, du wolltest hier wohl schreiben ' ', kommas punkt etc. werden bei dir auch nicht berücksichtigt.
3. for i:=0 to Woerter.Count-1 do die woerter-stringliste sprichst du außer dort nie an, hier wird nie was drin stehen. stattdessen schreibst du data.Add(wort); und fügst dein Wort wieder zur data-liste hinzu. hier wolltest du wahrscheinlich schreiben : woerter.add(...).
4. generell ist das mit der wort und zahlenliste nicht so ideal, hier ist villeicht ein dyn array besser, das hinufügen von zahlen und das umrechnen mit strtoint wird dich zeit kosten. außerdem würden bei dir "Ich" und "ich" zwei unterschieldiche Wörter sein.

Such mal im Forum nach Hier im Forum suchenwörter zählen hier gibt es ein paar wenige Beiträge die du dir mal anschauen solltest, du findest mit Sicherheit einen funktionierenden Algo, den du verwenden kannst.

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#10

Re: zugriffsverletzung bei TStrings

  Alt 30. Jun 2004, 21:11
Ohhh

*schäm über dumme Fehler*

naja, es soll auch lediglich ein tool sein, mit dem ich ne datei einlesen kann und ein überblick gewinnen kann was häufig dran kommt an wörtern.
gut, mit . und , muss noch rein

es soll dazu dienen:

ich will einen tipptrainer machen, und ne funktion einbauen, dass man üben kannn oft genutzte wörter zu üben....

dazu brauch ich ne liste an oft genutzten wörtern

ausserdem, das ding hab ich mir in ca einer halben stunde zusammengeschreinert....

thx fürs fehler finden...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:54 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