Sklejanie liczby z dwóch ciągów znaków

0

Witam Panowie!
Już mi kończą się pomysły. Potrzebuję zrobić coś takiego, że gdy w GetText(1) = 521511000 a w CSVParser.Row.Fields[1] = 1 to wyjdzie mi wartość 521511001

Próbowałem zrobić to w sposób następujący :

CSVParser.OpenFile(AFileName);

      OutputList.Clear;
      while not CSVParser.EOF do
      begin
        TempRow := '';

        Temp := GetText(1);
        Delete(Temp, Length(Temp) - 2, MaxInt);
        Temp := Temp + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]) - 2, MaxInt);

        TempRow := Temp + ',' +                                                  //NUM

Jednak gdy daję

Temp := Temp + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]) - 2, MaxInt);   

To zwraca mi wartość 5215111 Czyli bez dwóch zer.

Macie może jakieś pomysły jak z tego wybrnąć?

0

Np. Dolozyc dwa zera w pliku do jedynki.

0

To nie wchodzi w grę.

0

A co ma wyjść?

0

zamien to:

Temp := Temp + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]) - 2, MaxInt);

na to (pisane z glowy i brzydko):

        case Length(CSVParser.Row.Fields[0]) of
         1:   Temp := Temp + '00' + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]), MaxInt);
         2:   Temp := Temp + '0' + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]) - 1, MaxInt);
         else Temp := Temp + Copy(CSVParser.Row.Fields[0], Length(CSVParser.Row.Fields[0]) - 2, MaxInt);
        end;   

PS. oczywiscie warto zapisac powtarzajacy sie kod do zmiennej, ale nie oszukujmy sie :)

0

Momento, chcesz dodawać liczby traktując je jak stringi?

0

@lampasss: słyszałeś o czymś takim jak StringOfChar? ;)

0
Temp[Length(Temp)]:=Chr(Ord('0')+CSVParser.Row.Fields[1] );

?
Może wyjaśnij dokładnie co chcesz otrzymać

0

Może podam na przykładach.
Jeżeli mam podaną wartość 152 987 000 i wczytam wartość 1 to wyjdzie mi 152 987 001.

Mam 152 987 000 i wczytuję 10 wychodzi 152 987 010

Mam 152 987 000 i wczytam 100 wyjdzie 152 987 100

Mam 152 987 000 i wczytam 1000 to wyjdzie 152 987 000

Jak widzisz głównie chodzi o 3 ostatnie liczby, które mam podmienić gdy wczytuję wartość. Z tym, że zwykłe copy nie zdaje egzaminu z tego powodu, że gdy wczytam wartość z jednej lub dwóch liczb to mi ucina zera. Dla przykładu :

Mam 152 987 000 i wczytuję 1 to wychodzi 152 987 1
Czyli jest źle w tym przypadku. Powinno wyjść 152 987 001

Może dało by się zrobić to jakoś z predefiniowaną wartością?
Coś takiego:
If (1) return (001)
If (2) return (002)
I tak dalej. Chyba, że myślę jakoś naokoło.

2

No bez jaj.
Jeśli chcesz dodać dwie liczby to po prostu je dodaj a nie kombinuj z jakimś sklejaniem.
Jeśli pierwsza liczba wygląda jak piszesz "XXX XXX XXX" to usuń spacje, potraktuj ją jako liczbę i dodaj drugą.
Jeśli jako wynik chcesz liczbę w formacie "XXX XXX XXX" to po działaniu matematycznym ponownie zamień ja na stringa umieszczając spacje co 3 cyfry.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0