Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme mit tStrings und Strings im Memofeld (https://www.delphipraxis.net/86124-probleme-mit-tstrings-und-strings-im-memofeld.html)

chrizke 9. Feb 2007 13:03


Probleme mit tStrings und Strings im Memofeld
 
Hi,

ich habe ein Memofeld, welches mit Text gefüllt ist.
Nun muss ich Zeile für Zeile auslesen und bearbeiten.
Ich habe zum Bearbeiten eine Funktion geschrieben die ein Array vom Typ String als Result ausgibt. Das ist auch nicht das Problem.

Das Problem ist, dass wenn ich mit MEMOFELD.lines.strings[i] in einer for-Schleife jede Zeile einlese und in die Funktion übergebe, Delphi6 meckert, dass die Typen (tsring und string) nicht übereinstimmen.

Kann mir jemand sagen, wie ich dieses Problem umgehe???



chrizke

Fussel_Scampi 9. Feb 2007 13:07

Re: Probleme mit tStrings und Strings im Memofeld
 
Ich hab genau das selbe problem^^

marabu 9. Feb 2007 13:10

Re: Probleme mit tStrings und Strings im Memofeld
 
Herzlich willkommen in der Delphi-PRAXiS, ihr beiden.

Ihr müsst ein wenig Code zeigen - und die Variablen-Definitionen wo nötig.

Freundliche Grüße vom marabu

MrKnogge 9. Feb 2007 13:10

Re: Probleme mit tStrings und Strings im Memofeld
 
Moin und herzlich Willkommen in der DP,

Delphi-Quellcode:
MEMOFELD.lines.strings[i]
gibt dir ein String zurück, du versuchst ihn wahrscheinlich als TStrings zu behandeln. Poste mal bitte deinen Code.

Gruß

PS:

Zitat:

Zitat von chrizke
die ein Array vom Typ String als Result

Statt ein Array vom Typ String sollte man lieber den Typ Strings zurückgeben.

Jürgen Thomas 9. Feb 2007 13:11

Re: Probleme mit tStrings und Strings im Memofeld
 
Ich sehe nicht, wo das Problem liegen sollte. Lines ist vom Typ TStrings. Mit Memo1.Lines[i] bekommst Du jede einzelne Zeile; mit TStrings (also einer "Kopie" von Memo1.Lines) könntest Du mindestens genauso gut arbeiten wie mit einem Array; und es gibt genügend Funktionen zum Kopieren; z.B.:
Delphi-Quellcode:
Kopie.Add(Memo1.Lines[i]);
Kopie.AddStrings(Memo1.Lines);
Vielleicht kannst Du genauer angeben, bei welcher Zuordnung die inkompatiblen Typen bemängelt werden.

Gruß Jürgen

chrizke 9. Feb 2007 13:15

Re: Probleme mit tStrings und Strings im Memofeld
 
also hier ist die Zeile die den Fehler:
Delphi-Quellcode:
     Zeile := mAnzeige.lines.strings[i];
     Zeilenarray:=Split(Zeile, ';');
So Split ist wie folgt deklariert:

Der Interface Teil:
Delphi-Quellcode:
type
  TStringArray = array of String;

  function Split(strring, trennzeichen: String): TStringArray;
Der Implementation Teil:
Delphi-Quellcode:
function Split(strring, trennzeichen: String): TStringArray;
var
  I, L: Integer;
begin
  SetLength(Result, 0);
  if strring = '' then
    Exit;
  I := Pos(trennzeichen, strring);
  L := Length(trennzeichen);
  while I > 0 do
  begin
    Result[High(Result)] := copy (strring,1,I-1);
    delete(strring,1,I);
  end;
Ich brauche das Array als Result, nur nen String bringt nichts!

Klaus01 9. Feb 2007 13:22

Re: Probleme mit tStrings und Strings im Memofeld
 
Wie hast Du denn "Zeilenarray" deklariert.

Grüße
Klaus

marabu 9. Feb 2007 13:23

Re: Probleme mit tStrings und Strings im Memofeld
 
Vielleicht solltest du dich zuerst mal um deine Split-Funktion kümmern - da liegt einiges im Argen. Deine Schleife steuerst du mit I, aber I wird in der Schleife nicht angepasst.

Der Zugriff auf die einzelnen Zeilen des Memos kann auch über Memo.Lines[i] erfolgen und du kannst den String auch sofort an deine Splitfunktion übergeben - ein Umspeichern ist nicht nötig.

Freundliche Grüße

chrizke 9. Feb 2007 13:26

Re: Probleme mit tStrings und Strings im Memofeld
 
zeilenarray wird wie folgt deklariert:

Delphi-Quellcode:
zeilenarray:array of String;

Es geht mir im Moment nur um das Typenproblem und nicht um die Funktion, dass da noch teile nicht ganz ausgereift sind ist mir klar.

Gruber_Hans_12345 9. Feb 2007 13:29

Re: Probleme mit tStrings und Strings im Memofeld
 
wie ist zeile (sollte ein normaler string sein) deklariert?


Zitat:

Zitat von chrizke
also hier ist die Zeile die den Fehler:
Delphi-Quellcode:
     Zeile := mAnzeige.lines.strings[i];
     Zeilenarray:=Split(Zeile, ';');

und in welcher zeile nun genau?

poste eventuell aml den ganzen source code


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