Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Umwandlung TStrings in Integer (https://www.delphipraxis.net/92842-umwandlung-tstrings-integer.html)

punker-lili 27. Mai 2007 11:16


Umwandlung TStrings in Integer
 
Hallo!:hi:
Ich möchte gerne die Werte meiner StringList in Integerwerte umwandeln. Ich habees schon mit StrToInt versucht, aber da beschwert sich der Compiler "Incompatible types:'String' and 'TStrings'".

Könnte mir bitte jemand helfen?!

Danke Anna

mkinzler 27. Mai 2007 11:18

Re: Umwandlung TStrings in Integer
 
Wie gesagt du kannst eine Stringliste nicht in Integer wandeln, sondern nur die darin enthaltene Strings

Delphi-Quellcode:
for i := 0 to StringListe.ItemsCount -1 do
begin
    ... := StrToInt(StrngListe.Items[i]);
end;

punker-lili 27. Mai 2007 11:27

Re: Umwandlung TStrings in Integer
 
Was bedeutet "items"?:gruebel: Denn der Compiler beschwert sich, dass es nich declariert wurde.

EDatabaseError 27. Mai 2007 11:31

Re: Umwandlung TStrings in Integer
 
Zitat:

Zitat von mkinzler
Wie gesagt du kannst eine Stringliste nicht in Integer wandeln, sondern nur die darin enthaltene Strings

Delphi-Quellcode:
for i := 0 to StringListe.ItemsCount -1 do
begin
    integerarray[i] := StrToInt(StringListe.Items[i]);
end;

Da war ein Tippfehler ;-)

GuenterS 27. Mai 2007 11:51

Re: Umwandlung TStrings in Integer
 
Zitat:

Zitat von EDatabaseError
Zitat:

Zitat von mkinzler
Wie gesagt du kannst eine Stringliste nicht in Integer wandeln, sondern nur die darin enthaltene Strings

Delphi-Quellcode:
for i := 0 to StringListe.ItemsCount -1 do
begin
    integerarray[i] := StrToInt(StringListe.Items[i]);
end;

Da war ein Tippfehler ;-)

Hast du das Probiert? Weil ItemsCount kennt die OH bei ner Stringliste gar nicht, genauso wie Items, deshalb würde ich folgenden Code vorschlagen:

Delphi-Quellcode:
for i := 0 to StringListe.Count -1 do
begin
    ... := StrToInt(StringListe.Strings[i]);
end;

punker-lili 27. Mai 2007 11:58

Re: Umwandlung TStrings in Integer
 
hab beides versucht.. aber keins funktioniert...
bei der zweiten möglichkeit beschwert er sich wieder, dass manString und TStrings nicht kombinieren kann... :pale:

GuenterS 27. Mai 2007 12:02

Re: Umwandlung TStrings in Integer
 
Vielleicht solltest uns jetzt ein wenig von dem Code zeigen der Probleme macht, sonst können wir nur noch raten, was du meinst.

Klaus01 27. Mai 2007 12:04

Re: Umwandlung TStrings in Integer
 
Kannst Du Deine Versuche einmal in hinein stellen?

Grüße
Klaus

punker-lili 27. Mai 2007 12:13

Re: Umwandlung TStrings in Integer
 
Delphi-Quellcode:
rocedure TForm1.ffnen1Click(Sender: TObject);
var
  F: TStringList;
  i,j: Integer;
begin
  if not opendialog1.execute then exit;
  F := TStringList.Create;
        try
          with StringGrid1 do
          begin
              F.LoadFromFile(OpenDialog1.FileName);
              RowCount := StrToInt(F[0]);                 // Zeilen
              ColCount := StrToInt(F[1]);                 // Spalten
              Edit1.Text := F[1];
              Edit2.Text := F[0];
              for i := 0 to (RowCount - 1) do // Zeilen M1 
                Rows[i].CommaText := StrtoInt F[i+2];
// 1.Versuch          
              for j := 0 to F.itemsCount - 1 do
               begin
                 rows[j]:= StrToInt(F.Items[j]);
               end;
//2.Versuch
              for j := 0 to F.itemsCount - 1 do
               begin
                 integerarray[j]:= StrToInt(F.Items[j]);
               end;

//3.versuch
              for j := 0 to StringListe.Count -1 do
               begin
                 rows[j] := StrToInt(F.Strings[j]);
               end;
               
          end;
         finally
          FrreAndNil(F);
         end;


end;
Das waren die dreiversuche, wobei keiner funktioniert hat... :cry:

mkinzler 27. Mai 2007 12:21

Re: Umwandlung TStrings in Integer
 
Delphi-Quellcode:
for j := 0 to StringListe.Count -1 do
begin
    integerarray[j := StrToInt(F.Strings[j]);
end;

Klaus01 27. Mai 2007 12:27

Re: Umwandlung TStrings in Integer
 
Delphi-Quellcode:
for j := 0 to F.Count -1 do
begin
    integerarray[j] := StrToInt(F.Strings[j]);
end;

punker-lili 27. Mai 2007 12:49

Re: Umwandlung TStrings in Integer
 
danke.. aber bei der cariante "invalid typecast".. was heiß das?bzw. was bedeutet das?

punker-lili 27. Mai 2007 12:51

Re: Umwandlung TStrings in Integer
 
tipfehler.. sorry.. ich meinte "...bei der Variante kommt folgender fehler..."

Apollonius 27. Mai 2007 12:53

Re: Umwandlung TStrings in Integer
 
Du musst bei dir bedenken: rows ist ein array-Property von TStrings. Du solltest dir überlegen, was du eigentlich machen willst. Willst du etwas in die Cells reinschreiben?
Zitat:

danke.. aber bei der cariante "invalid typecast".. was heiß das?bzw. was bedeutet das?
Kein Kommentar ohne Code.

punker-lili 27. Mai 2007 12:57

Re: Umwandlung TStrings in Integer
 
Ich möchte in die zellen Zahlen hineinschreiben, kann aber zur Zeit nur Strings hineinschreiben... Daher möchte ich diese Stringsin Integerwerte umwandeln...

Apollonius 27. Mai 2007 12:59

Re: Umwandlung TStrings in Integer
 
In Stringgrids stehen grundsätzlich nur Strings, wie der Name schon sagt. In Integer musst du grundsätzlich nur bei der Weiterverarbeitung konvertieren.

punker-lili 27. Mai 2007 13:01

Re: Umwandlung TStrings in Integer
 
Wie kannich sie beim Weiterkonvertieren umwandeln?

Apollonius 27. Mai 2007 13:04

Re: Umwandlung TStrings in Integer
 
Ich fürchte, ich verstehe dich nicht ganz...
Wenn du zum Beispiel ein Integerarray brauchst, dass du mit den Daten aus der ersten Zeile des Grids füllen willst, dann verwendest du einfach eine for-Schleife:
Delphi-Quellcode:
for i:=0 to stringgrid.rows[0].count-1 do
 integerarray[i]:=strtoint(stringgrid.rows[0][i]);

Klaus01 27. Mai 2007 13:05

Re: Umwandlung TStrings in Integer
 
Wie der Name schon sagt, in StringGrids gehören Strings.
Deine Zahlen die Du als Strings aus der Datei holst kannst Du direkt ohne Umwandlung
in das StringGrid schreiben.

Wenn Du mit den Zahlen rechnen willst, mußt Du sie in ein Zahlenformat umwandeln (Integer, Float).

Grüße
Klaus

punker-lili 27. Mai 2007 13:09

Re: Umwandlung TStrings in Integer
 
@Apollonius: also mir ist klar das in der stringlist alle werte strings sind. nun möchte ich aber, dass diese stringwerte in integerwerte umgewandelt werden, damit ich sie weiterverwenden kann. aber die variante mit dem integerarray funktioniert nicht.. zum einen verlangt er jedesmal runde statt eckigen klammern und zum anderen gibt er bei änderung von eckigen in runde Kalmmern die Fehler "Invalid typecast" aus.

@Klaus:undwie kann ich in ein zahlenformat umwandeln?

Apollonius 27. Mai 2007 13:11

Re: Umwandlung TStrings in Integer
 
Ohne Code kann ich das absolut nicht kommentieren.

punker-lili 27. Mai 2007 13:12

Re: Umwandlung TStrings in Integer
 
auf seite eins steht der gesamte quelle code... und versuch 2 das mit dem integerarray...

Klaus01 27. Mai 2007 13:34

Re: Umwandlung TStrings in Integer
 
Dein zweiter Versuch sollte so vom Syntax her korrekt sein:

Delphi-Quellcode:
for j := 0 to F.Count - 1 do
  begin
    integerarray[j]:= StrToInt(F.Strings[j]);
 end;
Wie ist denn Dein IntegerArray definiert?

String in Zahlenwert umwandeln -> StrToInt (wandelt String in Integer um)
-> StrToFloat (wandelt String in ein Floatwert um)

So schwer ist das doch nicht.

Grüße
Klaus

Dunkel 27. Mai 2007 14:28

Re: Umwandlung TStrings in Integer
 
Ich vermute mal ganz stark, dass integerarray nicht deklariert wurde.

Delphi-Quellcode:
var
  integerarray: array of integer;
begin
  SetLength(integerarray, F.ItemsCount);
{..}
  for j := 0 to F.itemsCount - 1 do
    begin
      integerarray[j]:= StrToInt(F.Items[j]);
    end;
{..}
end;

Neutral General 27. Mai 2007 14:30

Re: Umwandlung TStrings in Integer
 
Hi

Ehm das Problem liegt ganz woanders.. du musst und darfst die Strings in deiner Liste gar nicht in Zahlen umwandeln!

So muss das heißen:
Delphi-Quellcode:
for j := 0 to F.itemsCount - 1 do
begin
  rows[j]:= SF.Items[j];
end;
Gruß
Neutral General

punker-lili 27. Mai 2007 16:12

Re: Umwandlung TStrings in Integer
 
@Neutral General: Was ist SF?

Items funktioniert nicht... ich habe die beiden Quelltexte (Neutral General,Dunkel) ausprobiert und jedesmal hat er ein Problem mit items... er sagt dazu "Undeclared identifier:'items'". Kann es daran liegen,dass ich Delphi 7 Personal benutze?

Apollonius 27. Mai 2007 16:14

Re: Umwandlung TStrings in Integer
 
Denk doch mal mit!
In einer TList heißt das nun mal Items. Bei TStrings muss es Strings heißen.

DeddyH 27. Mai 2007 16:24

Re: Umwandlung TStrings in Integer
 
Also, bei mir geht das hier:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var F: TStringList;
    integerarray: array of integer;
    i: integer;
begin
  F := TStringList.Create;
  try
    F.Add('1');
    F.Add('2');
    F.Add('3');
    F.Add('4');
    F.Add('5');
    F.Add('6');
    F.Add('7');
    F.Add('8');
    F.Add('9');
    F.Add('10');
    SetLength(integerarray,F.Count);
    for i := 0 to F.Count - 1 do
      integerarray[i] := StrToInt(F[i]);
    for i := 0 to Length(integerarray) - 1 do
      ShowMessage(Format('%d hat den Wert %d',[i,integerarray[i]]));
  finally
    FreeAndNil(F);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

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